GELÖST Batch - Command in FOR-Loop

Diskutiere Batch - Command in FOR-Loop im Programmierung Forum im Bereich Software Forum; Hallo. Ich versuche per Batch eine Umgebungsvariable auf den Ausgabewert einer Anwendung zu setzen. Ich versuche folgendes: FOR /f "usebackq" %a...
D

Doggeti

Threadstarter
Mitglied seit
19.07.2011
Beiträge
4
Hallo. Ich versuche per Batch eine Umgebungsvariable auf den Ausgabewert einer Anwendung zu setzen. Ich versuche folgendes:

Code:
FOR /f "usebackq" %a IN (`"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate1\AddOnSetupTemplate1\Version.exe" "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate1\AddOnSetupTemplate1\AddOnFiles\Tools_Test.exe"`) DO SET VERSION=%a
Ich bin dabei den Beschreibungen auf
http://www.robvanderwoude.com/ntfor.php
http://ss64.com/nt/for_cmd.html
gefolgt

Ich erhalte aber den Fehler:

Code:
C:\Dokumente und Einstellungen\Administrator>FOR /f "usebackq" %a IN (`"C:\Dokum
ente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\
AddOnSetupTemplate1\AddOnSetupTemplate1\Version.exe" "C:\Dokumente und Einstellu
ngen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate
1\AddOnSetupTemplate1\AddOnFiles\Tools_Test.exe"`) DO SET VERSION=%a
Der Befehl "C:\Dokumente" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Es werden also die doppelten Anführungszeichen um den Pfad der Anwendung und deren Parameter ignoriert. Ich habe den gleichen Befehl auch schon ohne "usebackq" und mit normalen einfachen Anführungszeichen anstatt den Backquotes um den Command-Teil versucht. Der Fehler war der gleiche.

Meine Frage also: Wie schaffe ich es, die Pfade im Command-Teil der Schleife in Anführungszeichen zu verpacken, damit ich dort Pfade mit Leerzeichen verwenden kann?

Vielen Dank schonmal.
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.667
Es geht hier um "C:\Dokumente" aus dem Argument, nicht aus dem Befehlsteil (mit dem Aufruf der version.exe. Versuch mal, die Gänsefüßchen beim Argument weg zu lassen oder die einfachen ' zu verwenden.

Nachtrag: es scheint doch um das erste C:\Dokumente zu gehen, aber bei mir kommt der Fehler, wenn ich das Argument auch in Gänsefüßchen setze

Code:
C:\Dokumente und Einstellungen\automatthias>FOR /F "usebackq" %i IN (`"C:\Dokumente und Einstellungen\automatthias\Eigene Dateien\dig dir\dig.exe" "www.winboard.org"`) DO @echo %i
Es muss also mit dem Argument zu tun haben, aber ganz ohne " beim Argument wird in Deinem Fall auch nicht klappen (probiers trotzdem mal).

Evtl. den Umweg wählen und das Argument zuvor einer Variablen zuweisen


Ach so: und :welcome:
 
Zuletzt bearbeitet:
D

Doggeti

Threadstarter
Mitglied seit
19.07.2011
Beiträge
4
Die Idee mit dem Zuweisen des Arguments an eine Variable vor der Schleife habe ich mal verfolgt. Zunächst nur mit dem Argument, dann auch noch mit dem Command. Ich bin schließlich zu folgender Version gekommen (was leider nicht geklappt hat):

Code:
C:\Dokumente und Einstellungen\Administrator>SET CMD="C:\Dokumente und Einstellu
ngen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate
1\AddOnSetupTemplate1\Version.exe"

C:\Dokumente und Einstellungen\Administrator>echo %CMD%
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\
Projects\AddOnSetupTemplate1\AddOnSetupTemplate1\Version.exe"

C:\Dokumente und Einstellungen\Administrator>SET ARG="C:\Dokumente und Einstellu
ngen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate
1\AddOnSetupTemplate1\AddOnFiles\Tools_Test.exe"

C:\Dokumente und Einstellungen\Administrator>echo %ARG%
"C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\
Projects\AddOnSetupTemplate1\AddOnSetupTemplate1\AddOnFiles\Tools_Test.exe"

C:\Dokumente und Einstellungen\Administrator>FOR /F "usebackq" %a IN (`%CMD% %AR
G%`) DO SET VERSION=%a
Der Befehl "C:\Dokumente" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
 
D

Doggeti

Threadstarter
Mitglied seit
19.07.2011
Beiträge
4
Ich habs durch viel rumprobieren rausbekommen:

Code:
FOR /F "usebackq" %a IN (`""C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate1\AddOnSetupTemplate1\Version.exe" "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\AddOnSetupTemplate1\AddOnSetupTemplate1\AddOnFiles\Tools_Test.exe""`) DO SET VERSION=%a
Man beachte die extra doppelten Anführungszeichen, die den gesamten Befehl inklusive Argument innerhalb der back quotes umschließen.

Jetzt wäre es noch prima wenn mir das jemand erklären kann. Ich verstehe nämlich nicht wieso das so sein muss.
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.667
Ach so, verschachtelte Gänsefüßchen.

Ich denke, das liegt daran: Die Backquotes `` hat MS ja aus der Unix/Linux-Welt übernommen. Das bedeutet, es wird eine Subshell gestartet, also bei Windows eine neue cmd.exe (kann man schön beobachten, wenn man einen zweiten Monitor zur Verfügung hat, auf dem der Process Explorer läuft)
Dieser cmd.exe wird der Komplettstring als Argument übergeben (cmd /c "Argument"). Dabei fallen die äußeren Gänsefüßchen weg.
Und zum Ausführen des Kommandos ist es dann notwendig, jeweils das Kommando (version.exe) und dessen Argument (Tools_test.exe) in "" zu packen, weil ja Leerzeichen drin vorkommen.
 
D

Doggeti

Threadstarter
Mitglied seit
19.07.2011
Beiträge
4
Verstehe, verstehe. Vielen Dank!
 
Thema:

Batch - Command in FOR-Loop

Sucheingaben

for schleife dir command leertaste

Batch - Command in FOR-Loop - Ähnliche Themen

  • Probleme mit dem DOS-Befehl "ren" in Batch-Dateien

    Probleme mit dem DOS-Befehl "ren" in Batch-Dateien: Hallo Community! In meinem Windows 10 (1909) ist die cmd.exe mit dem Zeitstempel 20.01.2020 17:01 und der Versionsnummer 10.0.18362.449...
  • Wie erzeuge ich per Batch eine Batch-Datei, wenn clip und exit darin vorkommen?

    Wie erzeuge ich per Batch eine Batch-Datei, wenn clip und exit darin vorkommen?: F:\ ist meine RAM-Disk, aber egal. Ich habe hier eine Batchdatei erstellt mit folgendem Inhalt: echo "%var1%%var2%%var3% | clip&del...
  • Lässt sich per Batch/CMD unter Win10 ermitteln, welche Major Release man hat?

    Lässt sich per Batch/CMD unter Win10 ermitteln, welche Major Release man hat?: Frohe Weihnachten. :) Lässt sich per Batch/CMD unter Win10 ermitteln, welche Major Release man hat? Also z.B 1511 oder 1903? Mit dem Befehl...
  • Batch called Taskkill.bat causes problems!

    Batch called Taskkill.bat causes problems!: I just created a simple batch and came into doubt. The command: taskkill /T /IM notepad.exe pause Lead to an endless loop in the cmd window...
  • GELÖST net use: Fehlermeldung in Batch, command line ok???

    GELÖST net use: Fehlermeldung in Batch, command line ok???: Hi all, ich habe da gerade einen Knoten: Wenn ich net use X: \\server\share im cmd Window (Start-Ausführen-cmd.exe) eingebe, funzt das ganz...
  • Ähnliche Themen

    Oben