Verwendung einer gesetzten Variable noch in derselben Eingabezeile
Liebe Gemeinde,
ich habe ein simples Problem: Ich muss ein paar Befehle in einer Zeile abschicken.
Kein Problem, da verknüpfe ich sie doch mit "&".
Aber wenn ich mit set eine Variable definiere, kann ich sie nicht in der selben Zeile benutzen.
Bsp: set a=abc&echo %a%
Wenn ich dieselbe Zeile nochmal abschicke, funktioniert es. Der set-Befehl muss also mit Enter abgeschickt werden, bevor die Variable initialisiert wird!?
Könnt ihr mir helfen?
Vielen herzlichen Dankeschön!
ich habe ein simples Problem: Ich muss ein paar Befehle in einer Zeile abschicken.
Kein Problem, da verknüpfe ich sie doch mit "&".
Aber wenn ich mit set eine Variable definiere, kann ich sie nicht in der selben Zeile benutzen.
Bsp: set a=abc&echo %a%
Wenn ich dieselbe Zeile nochmal abschicke, funktioniert es. Der set-Befehl muss also mit Enter abgeschickt werden, bevor die Variable initialisiert wird!?
Könnt ihr mir helfen?
Vielen herzlichen Dankeschön!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 237149
Url: https://administrator.de/contentid/237149
Ausgedruckt am: 26.11.2024 um 02:11 Uhr
9 Kommentare
Neuester Kommentar
Moin EvaEden,
wenn du die delayed expansion auch schon in einer Eingabezeile, also ohne einen Batch nutzen willst, dann musst du (einmalig) DelayedExpansion mittels Registry-Eintrag als Standardverhalten setzen.
Als Normal-Benutzer so:
Mit "mehr" Rechten kannst du es auch im Zweig HKLM aktivieren als Default für alle Benutzer, falls das Sinn machen sollte.
Jedesmal danach kannst du in jedem neuen CMD-Fenster dein Beispiel
... erfolgreich ausprobieren und natürlich auch deine %log%--String-Erzeugung.
Grüße
Biber
wenn du die delayed expansion auch schon in einer Eingabezeile, also ohne einen Batch nutzen willst, dann musst du (einmalig) DelayedExpansion mittels Registry-Eintrag als Standardverhalten setzen.
Als Normal-Benutzer so:
reg add "HKCU\Software\Microsoft\Command Processor" /v DelayedExpansion /t REG_DWORD /d 0x1
Mit "mehr" Rechten kannst du es auch im Zweig HKLM aktivieren als Default für alle Benutzer, falls das Sinn machen sollte.
Jedesmal danach kannst du in jedem neuen CMD-Fenster dein Beispiel
setlocal enabledelayedexpansion&set a=abc&echo !a!
... erfolgreich ausprobieren und natürlich auch deine %log%--String-Erzeugung.
Grüße
Biber
Hallo EvaEden.
Ich wette, dass es in Python auch so etwas wie ein CreateProcess oder vielleicht sogar eine eigene Klasse gibt, mit der man 7-Zip sinnvoller bedienen könnte. Selbst wenn nicht, wird es doch möglich sein deinen Timestamp im Pythoncode zusammen zu bauen, statt in der aufgerufenen Kommandozeile.
Wie auch immer: Deine Kommandozeile führt dazu, dass die cmd.exe gestartet wird. Ergo kannst du den Aufruf der CMD auch gleich in die Kommandozeile einbauen und dabei gibt es bekanntlich die Option
Grüße
rubberman
Es ist ein externer Aufruf aus Python heraus
Ich wette, dass es in Python auch so etwas wie ein CreateProcess oder vielleicht sogar eine eigene Klasse gibt, mit der man 7-Zip sinnvoller bedienen könnte. Selbst wenn nicht, wird es doch möglich sein deinen Timestamp im Pythoncode zusammen zu bauen, statt in der aufgerufenen Kommandozeile.
Wie auch immer: Deine Kommandozeile führt dazu, dass die cmd.exe gestartet wird. Ergo kannst du den Aufruf der CMD auch gleich in die Kommandozeile einbauen und dabei gibt es bekanntlich die Option
/v:on
um die verzögerte Variablenerweiterung einzuschalten.cmd /v:on /c "set LOG=Logs%DATE:~6,4%%DATE:~3,2%%DATE:~,2%-%TIME:~,2%%TIME:~3,2%%TIME:~-5%.zip&echo 7-zip a "!LOG: =0!" "FILES""
Grüße
rubberman