![Verschachtelt für - Batch](https://rvso.com/image/1444057/Verschachtelt%20f%C3%BCr%20-%20Batch.png)
Ich habe ein kleines Problem mit diesem Code:
for %%A in (tmp1,tmp2,tmp3) do (
for /R C:\%%A %%B in (*.txt) do copy %0 "%%~B" /Y
)
Ich bekomme keine Fehlermeldung oder ähnliches, der Code läuft einfach, funktioniert aber nicht. Kann mir jemand weiterhelfen? Danke!
Antwort1
Der Batch-Parser besteht aus mehreren Phasen. SieheWie analysiert der Windows-Befehlsinterpreter (CMD.EXE) Skripts?Für mehr Information.
Die Optionen der FOR-Anweisung werden vor der FOR-Variablenerweiterung analysiert. Daher können Sie innerhalb von FOR-Optionen keine FOR-Variablen (oder eine verzögerte Erweiterung) verwenden.
Ich sehe zwei Problemumgehungen:
1) PUSHD in den Stammordner, damit es /R
richtig mit dem aktuellen Verzeichnis funktioniert.
Diese Option gefällt mir am besten.
for %%A in (tmp1,tmp2,tmp3) do (
pushd c:\%%A
for /R %%B in (*.txt) do copy %0 "%%~B" /Y
popd
)
2) Übertragen Sie den Wert in ein CALL-Argument
for %%A in (tmp1,tmp2,tmp3) do call :copyLoop c:\%%A
exit /b
:copyLoop
for /r %1 %%B in (*.txt) do copy %0 "%%~B" /Y
exit /b