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.053
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.053
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

  • Keine Applikation zum Ausführen einer Batch Datei vorhanden

    Keine Applikation zum Ausführen einer Batch Datei vorhanden: Sobald ich ich versuche eine .bat Datei zu starten steht dort das die Nötige Applikation auf meinem PC fehlt.
  • Batch Datei öffnen

    Batch Datei öffnen: Hallo, ich hätte da mal eine Frage! Ich möchte eine Batch Datei starten/öffnen, allerdings wird dieser Text bei mir angezeigt "Diese App kann auf...
  • [Batch] Dateien in bestimmter Menge in noch nicht vorhandene Ordner verschieben

    [Batch] Dateien in bestimmter Menge in noch nicht vorhandene Ordner verschieben: Hallo ihr, ich hab da ein Problemfall den ich gerne mit einer Batch lösen wollen würde. Folgende Ausgangssituation: Ich habe einen Ordner mit...
  • Sie müssen eine App für diese Aufgabe installieren bei Batch-Datei

    Sie müssen eine App für diese Aufgabe installieren bei Batch-Datei: Hallo liebe Community, Wenn ich eine batch-Datei unter Windows 10 starten möchte, kommt immer das Fenster "App im Store suchen? Sie müssen eine...
  • 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