hurz: batch-Problem

Hallo,

Ich möchte eine Batch-Datei basteln und nutze dazu die Variablen
%1% und %CD%
"Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!

Woran liegt das und wie bekomme ich das in den Griff?

Hurz

  1. Hallo

    Ich möchte eine Batch-Datei basteln

    warum und wozu? Warum nicht Windows Scripting Host oder Powershell?

    und nutze dazu die Variablen
    %1% und %CD%
    "Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!

    Welchen Wert erwartest Du? Welchen Wert erhälstst Du?

    Freundliche Grüße

    Vinzenz

    1. Hey

      warum und wozu? Warum nicht Windows Scripting Host oder Powershell?

      Kenn ich nicht.. Sind die auch direkt mit Windows dabei?

      %CD%
      "Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!

      Welchen Wert erwartest Du? Welchen Wert erhälstst Du?

      C:\Dokumente und Einstellungen\MeinName erhalte ich wenn ich eine Datei Droppe
      und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.

      Hurz

      1. Hallo

        warum und wozu? Warum nicht Windows Scripting Host oder Powershell?
        Kenn ich nicht.. Sind die auch direkt mit Windows dabei?

        Windows Scripting Host ist seit Windows 2000 dabei, für 98, Me und NT 4.0 nachrüstbar. Programmierbar unter anderem in JScript, VBScript (Buildin), Python (nachrüstbar). Powershell ist der Nachfolger und gibts für XP und Vista zum Nachrüsten. Hab' ich noch nicht benutzt.

        %CD%
        "Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!

        Welchen Wert erwartest Du? Welchen Wert erhälstst Du?
        C:\Dokumente und Einstellungen\MeinName erhalte ich wenn ich eine Datei Droppe

        siehste, ich erhalte P:\ und die Batchdatei liegt auf dem Desktop.

        und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.

        und was verstehst Du darunter?

        Freundliche Grüße

        Vinzenz

        1. Hi,

          und was verstehst Du darunter?

          Also hab das grad auch mal aufm Desktop getestet und da gehts.. Es scheint so das es nur in den C:\Dokumente und Einstellungen\MeinName...\ - Verzeichnissen Funktioniert
          Denn im
          C:\Programme\xampp\htdocs\eclipse\abc\ Funktioniert es nicht.. Sehr merkwürdig!

          Hier mal meine Bacthfile:
          @echo off
          set path=%CD%
          echo %path%
          pause

          Wie gesagt wenn ich das Batch-File mit einem Doppelklick aufrufe dann erscheint das gewünschte ergebnis:
          C:\Programme\xampp\htdocs\eclipse\abc\ Droppe ich irgendeine Datei dann steht da plötzlich
          C:\Dokumente und Einstellungen\MeinName\

          Hurz

          1. Kann mir keiner bei einem so (scheinbar) einfachen Problem helfen?

            Hurz :-/

          2. Hallo

            Denn im
            C:\Programme\xampp\htdocs\eclipse\abc\ Funktioniert es nicht.. Sehr merkwürdig!

            "Funktioniert nicht" ist keine Fehlerbeschreibung!
            Was wird ausgegeben?

            Hier mal meine Bacthfile:
            @echo off

            REM Das ist wirklich überhaupt keine gute Idee:

            set path=%CD%

            REM Willst Du das "aktuelle Verzeichnis" an den Pfad anhängen?
            REM Dann:
            SET PATH=%PATH%;%CD%

            REM Wenn nicht, was bitte möchtest Du?

            echo %path%
            pause

            Code ohne vernünftige Kommentare ist miserabler Code.
            Code, der in einem Forum präsentiert wird, sollte eher mehr Kommentare aufweisen als Quellcode. Ja, eine nette Form spricht auch für sich und macht Code lesbarer.

            Du weißt im Moment, was Du vorhast. Der potentielle Helfer weiß es nicht.
            Jemand, der Hilfe haben möchte, sollte dem Helfer keine Hindernisse in den Weg stellen, sondern nach Möglichkeit Hindernisse entfernen. Dabei kann es sein, dass man durch das Wegräumen der Hindernisse bereits die Lösung findet, noch bevor man seine Frage abgeschickt hat.

            Wie gesagt wenn ich das Batch-File mit einem Doppelklick aufrufe dann erscheint das gewünschte ergebnis:
            C:\Programme\xampp\htdocs\eclipse\abc\ Droppe ich irgendeine Datei dann steht da plötzlich
            C:\Dokumente und Einstellungen\MeinName\

            Und warum auch nicht?
            Ich verstehe immer noch nicht, was Du willst. Ich weiß nicht, was Dein Batchdatei bewirken _sollte.

            Freundliche Grüße

            Vinzenz

        2. Hallo Vinzenz,

          Windows Scripting Host ist seit Windows 2000 dabei, für 98, Me und NT 4.0 nachrüstbar.

          der war sogar bei Win98 schon dabei (ich habe ihn bei der Installation immer bewusst abgewählt, weil er per Defaulteinstellung mit installiert wurde). Bei 98SE bin ich mir nicht sicher, ebensowenig bei ME; diese Versionen habe ich nur sehr selten in der Hand gehabt.

          %CD%

          Enthält das Arbeitsverzeichnis, also das Verzeichnis, das im Kontext der Batchdatei als "aktuelles Verzeichnis" gilt.

          "Droppe" Ich mit DragnDrop eine Datei auf die Batch-Datei ist %CD% plötzlich ein ganz anderer Pfad wie wenn ich die Datei direkt anklicke!

          Ja, Hurz: Wenn du eine Batchdatei per Doppelklick startest, wird das Verzeichnis, in dem sie liegt, ihr aktuelles Arbeitsverzeichnis. Rufst du sie von der Kommandozeile auf, stimmt das schon nicht mehr unbedingt; rufst du sie über eine Drop-Aktion aus dem Windows-Explorer auf, dann erst recht nicht.
          Ich bin mir nicht sicher, ob beim Drop das Arbeitsverzeichnis überhaupt eindeutig festgelegt ist; ich hab's mit meinem Windows 2000 eben versucht: Die Datei liegt auf dem Desktop (E:\Profile\Desktop) und gibt mir C:\ als %cd% aus.

          siehste, ich erhalte P:\ und die Batchdatei liegt auf dem Desktop.

          Das deutet stark darauf hin, dass der Wert von System zu System, vielleicht sogar von Aufruf zu Aufruf unterschiedlich ist.

          und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
          und was verstehst Du darunter?

          Vermutlich das Verzeichnis, in dem die Batchdatei liegt. Den kompletten Namen der Batchdatei hat man ja in %%0 - gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?

          So long,
           Martin

          --
          Der Mensch denkt, Gott lenkt.
          Der Mensch dachte, Gott lachte.
          1. Hallo Martin,

            Ich bin mir nicht sicher, ob beim Drop das Arbeitsverzeichnis überhaupt eindeutig festgelegt ist; ich hab's mit meinem Windows 2000 eben versucht: Die Datei liegt auf dem Desktop (E:\Profile\Desktop) und gibt mir C:\ als %cd% aus.

            Welche Werte haben bei Dir die Umgebungsvariablen

            - HOMEDRIVE
             - HOMEPATH

            sofern existent?

            siehste, ich erhalte P:\ und die Batchdatei liegt auf dem Desktop.

            Das deutet stark darauf hin, dass der Wert von System zu System, vielleicht sogar von Aufruf zu Aufruf unterschiedlich ist.

            und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
            und was verstehst Du darunter?

            Vermutlich das Verzeichnis, in dem die Batchdatei liegt.

            Das vermute ich zwar auch, aber - verdammt noch mal - genau das frage ich schon von Anfang an. Ich hätte gerne eine Bestätigung.

            Warum möchte der OP den Suchpfad in der aktuellen Instanz des Kommandozeileninterpreters auf dieses eine Verzeichnis reduzieren?
            Für die Geschwindigkeit der Ausführung? Das gewünschte Verzeichnis einfach vorne einfügen.
            Durch diese Aktion sind gegebenenfalls x andere Anweisungen mit kompletten Pfadangaben zu machen. Den Grund dafür hätte ich gerne gewußt.

            Den kompletten Namen der Batchdatei hat man ja in %%0

            Eben. %CD% _dafür_ zu nehmen, ist, hmm, unangebracht

            • gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?

            mit for sollte das gehen.

            help for

            (oder eine Archivsuche nach author:seth for)

            Freundliche Grüße

            Vinzenz

            1. Hallo Vinzenz,

              Die Datei liegt auf dem Desktop (E:\Profile\Desktop) und gibt mir C:\ als %cd% aus.

              Welche Werte haben bei Dir die Umgebungsvariablen

              • HOMEDRIVE
              • HOMEPATH
                sofern existent?

              hast einen guten Riecher gehabt:

              C:>set
              ...
              HOMEDRIVE=C:
              HOMEPATH=\ ...

              Warum möchte der OP den Suchpfad in der aktuellen Instanz des Kommandozeileninterpreters auf dieses eine Verzeichnis reduzieren?

              Ich glaube nicht, dass er das möchte - ich vermute vielmehr, dass ihm die Bedeutung der Umgebungsvariable %PATH% nicht klar ist.

              Den kompletten Namen der Batchdatei hat man ja in %%0
              Eben. %CD% _dafür_ zu nehmen, ist, hmm, unangebracht

              *g*

              • gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?
                mit for sollte das gehen.

              Ah, gut. Ich hatte im Moment keinen Schimmer, wonach ich suchen musste. Ich selbst habe %~pVAR auch noch nie verwendet; nur eine Stimme im Hinterkopf sagte mir, "Da gibt's doch auch was von Ratioph ..." - äh nee, falsches Märchen. ;-)

              Schönen Abend noch,
               Martin

              --
              Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
            2. gudn tach!

              Für die Geschwindigkeit der Ausführung? Das gewünschte Verzeichnis einfach vorne einfügen.

              wenn er die andern pfade nicht braucht, kann er sie ja einfach aus %path% loeschen; spart tipparbeit. und wenn das batch-file eh nur per maus aufgerufen wird, ist das ohnehin bloss eine temporaere geschichte (und mit setlocal waer's das auch im cli).

              Den Grund dafür hätte ich gerne gewußt.

              vielleicht meldet sich ja hurz noch mal.

              mit for sollte das gehen.

              geht sogar ohne. (siehe anderes posting von mir.)

              prost
              seth

          2. gudn tach!

            und Erwarten tu ich den Aktuellen Pfad worüber die Batch-Datei aufgerufen wird.
            und was verstehst Du darunter?

            Vermutlich das Verzeichnis, in dem die Batchdatei liegt. Den kompletten Namen der Batchdatei hat man ja in %%0 - gab's da nicht auch was, womit man die Pfadinformation daraus isolieren kann?

            vorsicht, in %%0 nicht, sondern in %0 (auch in batchfiles). die doppelten % sind dazu da, um einfache % zu maskieren, z.b. in schleifen.

            der pfad des ausgefuehrten scripts, steht in %~dp0, also z.b.

            echo %~dp0
            oder
              set pfad=%~dp0

            prost
            seth