Windows-Batchdatei, Durchlaufen von Dateien im Ordner, um eine Parameterliste zu erstellen, die an ein anderes Skript übergeben werden kann

Windows-Batchdatei, Durchlaufen von Dateien im Ordner, um eine Parameterliste zu erstellen, die an ein anderes Skript übergeben werden kann

Ich habe eine Windows-Batchdatei, die eine Reihe von Dateien verarbeitet. Dabei verwende ich die folgende Zeile:

forfiles /p "%~dpn1%LogDir%" /m "%SupportLog%*" /c "cmd /c logreader.py @file > \"%~dpn1%ParsedLogDir%\@file_Logreader.txt\"

Das funktioniert einwandfrei, durchläuft aber im Wesentlichen alle meine Dateien (%SupportLog%*) und übergibt sie einzeln an das Skript „logreader.py“.

Was ich wirklich machen möchte, ist eine Liste oder einen Parameter aller dieser Dateien zu erstellen und sie alle auf einmal an das Python-Skript zu übergeben, sodass der auszuführende Befehl folgendermaßen aussehen würde:

logreader.py "logfile.log" "logfile.log.1" "logfile.log.3" .....

Ich habe versucht, den SET-Befehl innerhalb des Forfile-Befehls so zu verwenden, dass:

forfiles /p "%~dpn1%LogDir%" /m "%SupportLog%*" /c "cmd /c set PARAMS=%PARAMS%@file "

Wenn ich dies jedoch ausführe und ECHO eingeschaltet lasse, sehe ich:

forfiles /p "C:\Path\log" /m "logfile.log*" /c "cmd /c set PARAMS=@file "

Was falsch ist. Und wenn ich „echo %PARAMS%“ verwende, erhalte ich kein Ergebnis.

Gibt es eine Möglichkeit, dies zu erreichen?

Vielen Dank

Antwort1

Ändern von Umgebungsvariablen in einemKind cmdInstanz (das ist, was cmd /caufgerufen wird) beeinflusst die Umgebung im übergeordneten cmdProzess nicht. Der folgende Codeausschnitt könnte helfen:

SETLOCAL EnableExtensions EnableDelayedExpansion
set "LogDir=%~dpn1log"         my guess only
set "SupportLog=logfile.log"   my guess only
set "PARAMS="                  initial value
rem 1st try for /R "%LogDir%" %%a in ("%SupportLog%*") do set PARAMS=!PARAMS! "%%~a"
rem 2nd try for %%a in ("%LogDir%\%SupportLog%*") do set "PARAMS=!PARAMS! "%%~a""
rem 3rd try
for %%a in ("%LogDir%\%SupportLog%*") do set "PARAMS=!PARAMS! "%%~nxa""
echo logreader.py %PARAMS%

Beachten Sie, dass der Imperativ logreader.pylediglich echozu Debugzwecken verwendet wird.

Ich verstehe das Ziel der Weiterleitung jedoch nicht >, tut mir leid ...

Ressourcen(Pflichtlektüre):

Bearbeiten:

verwandte Informationen