Чем/как можно массово запаковать файлы по маске/условию?
Может у кого валяется похожий скрипт или вы знаете, как это можно сделать. Пытался через 7-zip но не прокатило.
Есть папки с файлами в виде дерева:
с01
--01
--02
--03
с02
--01
--02
и т.д.
Мне нужно запаковать папки с01, с02 и т.д. так, чтобы в них были сразу эти файлы. Т.е. если просто правой кнопкой заархивировать, то у меня будет архив с01, открыв который я увижу папку с01 и в ней уже файлы.
А мне нужно чтобы открыв архив с01, я сразу видел файлы.
Тебе нужно подумать что делать с коллизиями имен. Так часто бывает что имя файло уникально только в рамках
одного фолдера. А как только начинаешь сливать все в единую структуру - появятся ошибки.
Ты уже решил что делать с ошибками? Overwrite? Ignore?
@echo off
setlocal enabledelayedexpansion
set "mainDir=C:\path\to\main"
set "7zPath=C:\Program Files\7-Zip\7z.exe"
for /D %%f in ("%mainDir%\*") do (
echo Processing folder: %%f
set "folderPath=%%f"
set "archiveName=%%~nf"
set "archivePath=%mainDir%\!archiveName!"
echo Creating archive at: !archivePath!.zip
"!7zPath!" a -tzip "!archivePath!.zip" "!folderPath!\*"
)
endlocal
Укажи директорию где лежат папки c01,c02 и т.д. и где 7z.exe
0x0f80 Чтобы каждый раз не изменять путь в файле, я правильно понимаю что можно заменить статический маршрут mainDir= на переменную %cd% и тогда скрипт будет выполняться в той папке где он лежит?
Другими словами я положил файл в директорию где лежат с01, с02 и т.д. запустил его он все запаковал, дальше скопировал скрипт в другую папку, запустил и т.д.