2

У меня есть текстовый файл, который я хочу заархивировать с каждым файлом в определенной папке.

Например, папка имеет: File1 , File2 , File3 и TextDoc1 .

Я хочу создать File1.zip (который включает в себя File1 и TextDoc1), File2.zip (который включает в себя File2 и TextDoc1) и File3.zip (который включает в себя File3 и TextDoc1).

Есть ли пакетная команда, которую я могу запустить (как .bat), чтобы создать эти архивы вместо того, чтобы создавать каждый по отдельности? Я использую файлы списка, но мне все еще нужно создать каждый файл .txt с именами файлов в нем.

Это то, что я использовал:

"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File1.zip" @"File1.txt"
"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File2.zip" @"File2.txt"

и т.п.

Почтовый индекс или Рар в порядке.

2 ответа2

1

@echo off for %%f in (*) do (       if not %%f==TextDoc1 (             (ваша команда для создания %%~nf.zip содержащего %%f и TextDoc1 )       ) )

for %%f in (*) означает для каждого файла в текущем каталоге - DO команду для создания ZIP-файла (детали которого не имеют значения) - кроме случаев, когда вы рассматриваете сам файл TextDoc1.  Пропустите это, иначе вы создадите файл TextDoc1.zip, который содержит две копии TextDoc1 (или, может быть, только одну, в зависимости от того, как работает WinRAR).

Одна хитрая вещь - это %%~nf , который является частью имени файла %%f (с удаленным расширением).  Я использовал это, потому что, хотя вы указали в качестве примера имена файлов File1, File2 и File3, я предполагаю, что у вас также есть File4.txt, résumé.doc, flower.jpg и т.д. Я предпочитаю, что вы хотите ZIP-файлы называются File4.zip, résumé.zip и flower.zip, а не File4 .txt.zip, резюме .doc.zip и flower .jpg.zip.  Конечно, это означает, что если есть schedule.mpp и schedule.xls, у нас может быть проблема.

0

Вот партия, которую вы можете попробовать:

@echo off

rem Set highest number
set /a highcount=3

rem Initialize counter to 1
set /a counter=1

:loop
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "File%counter%"
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "TextDoc1"

rem Increment the counter by 1
set /a counter+=1

rem If the counter is less than or equal to "highcount", then loop and do the next file.
if %counter% LEQ %highcount% goto loop

Это должно создать 3 zip-файла с именами File1.zip, File2.zip и File3.zip, каждый с соответствующим файлом «File #» и одинаковым "TextDoc1" в них.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .