Dies sollte ziemlich einfach sein ..Verschachtelte Schleife in einer Batch-Datei für die Bereinigung
Wir haben die folgende Struktur auf einem Windows-Server:
- D: \ Hersteller1
- D: \ vendor2
- D: \ tomcat1
- D: \ tomcat2
Und wir brauchen t o Protokolle archivieren und verwalten. Diese Struktur würde meine Vorliebe sein:
REM REMOVE ANY ZERO-BYTE FILES
FOR %%d IN (1,2) DO (
FOR /r D:\vendor%%d\logs %%X IN (*) DO IF %%~zX LSS 1 (DEL /Q "%%X")
FOR /r D:\vendor%%d\other_logs %%X IN (*) DO IF %%~zX LSS 1 (DEL /Q "%%X")
FOR /r D:\tomcat%%d\logs %%X IN (*) DO IF %%~zX LSS 1 (DEL /Q "%%X")
)
pause
Und die seltsame Sache ist, dass dies auch nicht zu funktionieren scheint.
REM REMOVE ANY ZERO-BYTE FILES
for %%d in (1,2) do call :process_dir %%d
goto :eof
:process_dir
FOR /r D:\vendor%1\logs %%X IN (*) DO IF %%~zX LSS 1 (DEL /Q "%%X")
FOR /r D:\vendor%1\other_logs %%X IN (*) DO IF %%~zX LSS 1 (DEL /Q "%%X")
FOR /r D:\tomcat%1\logs %%X IN (*) DO IF %%~zX LSS 1 (DEL /Q "%%X")
Vielen Dank!
ist wie Sie es haben. – Squashman
Ihr erster Ansatz kann nicht funktionieren, da 'for/R' keine anderen' for' Variablen im Pfad nach '/ R' akzeptiert; es akzeptiert auch keine verzögerten Expansionsvariablen; Sie können nur normale Prozentvariablen oder Argumentverweise wie '% 1' verwenden; für mich funktioniert Ihr zweiter Ansatz gut ... Haben Ihre realen Pfade Leerzeichen? Versuchen Sie, jeden Pfad richtig anzugeben ... – aschipfl