Архив csv списка подпапок

249
Alex

Я работаю в каталоге testсо следующим содержанием

  • subdir1
  • subdir2
  • subdir3
  • ...
  • subdirxxx

У меня есть список csv с именами подкаталогов, которые мне нужно включить в мой архив, например:

subdir2, subdir4, subdir7 

Мне нужно добавить подкаталоги (и их содержимое) из списка CSV в архив .zip, поддерживая пути.

У меня есть псевдо-рабочая строка:

for /f "delims=*" %%i in (list.csv) do (xcopy "path\to\maindir\" "path\to\a\newdir" /S /E 

и затем я вручную заархивирую новую папку, но я хотел бы автоматизировать этот процесс.

Редактировать:

Мне не нужно копировать list.csvподкаталоги в новый каталог, мне нужно заархивировать подкаталоги и файлы из списка в архив .zip, сохранив дерево каталогов. Архив должен иметь следующую структуру:

Тест \ subdir2 \

Тест \ subdir4 \

Тест \ subdir7 \

и так далее...

1
Да, вы можете автоматизировать это и посмотреть пример логики здесь: https://superuser.com/questions/1300346/how-to-recompress-many-zips-on-a-drive/1302473#1302473 с помощью 7Zip. По сути, вы можете использовать путь `7Z.exe" %% ~ Fi "\ to \ a \ newdir \ %% ~ Ni.zip" `, но здесь есть еще один пример поста https://superuser.com/questions/ 1188394 / using-a-batch-file-to-zip-files-as-Individual-zip-files / 1188406 # 1188406 просто запустите тестовый прогон и попробуйте подтвердить. Pimp Juice IT 6 лет назад 1
@PimpJuiceIT я обновил вопрос Alex 6 лет назад 0
О да, это имеет смысл - я рад помочь Pimp Juice IT 6 лет назад 0

1 ответ на вопрос

0
Alex

С помощью @PimpJuiceIT я получил что-то вроде этого:

@ECHO ON  SET SourceDir=drive:\path\to\source SET DestDir=drive:\path\to\destination SET PathToCSV=drive:\path\to\list.csv    for /f "delims=*" %%i in ("%PathToCSV%") do (xcopy "%SourceDir%\%%~i" "%DestDir%\%%~i\" /S /E /I)  pause CD /D "C:\Program Files\7-Zip" 7z.exe a "%DestDir%\zipfile.zip" "%DestDir%"  pause 

Это, вероятно, не лучшая практика в отношении дискового пространства, поэтому его следует использовать с осторожностью при работе с большими кусками данных.

Ваша команда xcopy не содержит ссылки на переменную for, содержащую повторяющийся подкаталог, так как это должно решить проблему? LotPings 6 лет назад 1
Я обновил команду. Однако, таким образом, мне каждый раз предлагается создавать новый каталог. В настоящее время я пытаюсь выяснить, как сказать `xcopy`, что я хочу автоматически создавать каталоги. Alex 6 лет назад 0
Обнаружил, что мне не хватает косой черты в% DestDir% \ %% ~ i \ и переключателе / ​​I Alex 6 лет назад 0