Batch-Datei 'for' - Schleifen - mehrere Leitungen
Warum wird die folgenden Zeilen arbeiten in einer batch-Datei?
for %%a in ("C:\Test\*.txt") do set FileName=%%~a
echo Filename is: %FileName%
Aber diese nicht?:
for %%a in ("C:\Test\*.txt") do (
set FileName=%%~a
echo Filename is: %FileName%
)
Es ist wie die "a" - variable nicht beibehalten, in der zweiten Zeile. Warum ist das so und wie kann ich den Inhalt von "a" wie in dem zweiten Beispiel?
InformationsquelleAutor der Frage Ekins86 | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil alles, was zwischen den Klammern geladen wird als eine Zeile. So
%FileName%
erweitert (load-time), bevor es festgelegt ist (während der Laufzeit). Wenn Sie müssen, verwenden Sie die zweite Form, die Sie benötigen, zu ermöglichen, verzögerte expansion. Dann werden Sie Schwierigkeiten haben, wenn der Dateiname enthält eine!
. Dies würde funktionieren, wenn es keine Klammern in den Dateinamen.InformationsquelleAutor der Antwort RGuggisberg