/ / Skrypt wsadowy do archiwizacji zawartości podfolderu za pomocą 7zip z FOR / R - plik wsadowy, przetwarzanie wsadowe, 7zip

Skrypt wsadowy do archiwizacji zawartości podfolderów za pomocą 7zip z FOR / R - plik wsadowy, przetwarzanie wsadowe, 7zip

Mam strukturę folderów jak poniżej:

C:\Logslogs1tracelogXXXX.log
C:\Logslogs2tracelogXXXX.log
C:\Logslogs3tracelogXXXX.log

Każdy folder ma grupę tracelogXXXX "s, i mam pseudokod dla skryptu, który przechwytuje każdy folder, archiwizuje każdy dziennik na jego posiadać .zip, a następnie usuń tracelog pozostały poza archiwum (ponieważ 7zip nie ma funkcji przenoszenia).

Ale naprawdę nie mam doświadczenia w partiach i nie mogę nawet sprawić, żeby zipp działał poprawnie.

Nie mogę uzyskać dostępu do dokumentacji dla 7zip z miejsca, w którym aktualnie się znajduję, więc próbowałem tego:

CD C:Logs
FOR /R %%i IN ("*.log") DO "C:...7za.exe" a -tzip "%%i.zip"

A także to:

CD C:Logs
FOR /R %%i IN ("*.log") DO "C:...7za.exe" a -tzip "%%i.zip" "%%i"

Pierwszy z nich uruchamia i zapisuje wszystkie dzienniki dla każdego wystąpienia pliku .log, dzięki czemu wiele zipów jest większe niż poprzednio. Drugi tworzy zip dla każdej instancji pliku .log, bez żadnych elementów.

Jak mogę po prostu skompresować każdy plik dziennika we własnym suwaku,Nazwa pochodzi od siebie, podczas pracy z katalogu nadrzędnego? Usunięcie zewnętrznych plików nie wydaje się trudne do osiągnięcia, kiedy odkryję, co jest nie tak z tą składnią, ale to jest ważna część!

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz to zrobić z poziomu wiersza poleceń bez konieczności użycia pliku wsadowego:

FOR /F "usebackq tokens=* delims=" %A IN (`DIR "C:Logs*.log" /B /S`) DO "C:PathTo7za.exe" a "%~dpnA.zip" "%~fA" & DEL "%~fA"

Aby użyć w pliku wsadowym, po prostu zamień każdą % z %%.