Заархивируйте каждый файл в каталоге, у которого еще нет заархивированной версии в другой папке.

Я использую 7-zip и Windows 2008 Server, и мне нужно архивировать каждый файл в папке C:\Original, для которого еще нет соответствующего ZIP-файла в C:\Archived. Я бы предпочел сделать это с файлом .bat.

Папка C:\Original содержит серию .PDF файлов, которые никогда не изменяются, например:

  • Мое Резюме.pdf
  • HouseLayout.pdf
  • Результаты опроса.pdf
  • БлаБлаБла.pdf

Я хочу запустить пакетный файл, который создаст ZIP-файл для каждого PDF-файла в папке C:\Archive, но только в том случае, если файл еще не существует. Например, если в папке C:\Archive уже есть два файла:

  • MyResume.zip
  • БлаБлаБла.zip

Запуск пакетного файла заархивирует только два разархивированных файла, HouseLayout.pdf и SurveyResults.pdf.

У меня есть пакетный файл, в котором используется команда FOR, которая заархивирует все файлы в C:\Original, но я хочу заархивировать только те, которые еще не существуют в C:\Archive.

Спасибо


person Scott Mitchell    schedule 18.02.2014    source источник


Ответы (2)


for %%f in ("c:\original\*.pdf") do if not exist "c:\archive\%%~nf.zip" (
    7za a "c:\archive\%%~nf.zip" "%%~ff"
)

Для каждого файла в указанной папке/наборе, если не существует файла с таким же именем, но с расширением zip, создайте zip-файл с исходным файлом внутри него.

person MC ND    schedule 18.02.2014

Я думаю, вам нужно что-то вроде этого:

for /F %%I in ('dir /b c:\original\*.pdf') do set filename=%%I
set archivedFile=%filename:~,-4%

if not exist C:\archive\%archivedFile%.zip (
  REM zip it up
)
person Adil Hindistan    schedule 18.02.2014
comment
Это обработает только один файл. - person foxidrive; 19.02.2014