Войти

Показать полную графическую версию : 7z архиватор - не правильная маска файлов


Neformat
27-03-2018, 11:36
Добрый день имеется такой cmd файл:

erase "D:\111\test.zip"
"C:\Program Files\7-Zip\7z.exe" a -r -tzip -ssw "D:\111\test.zip" "D:\111\*.txt"
"C:\Program Files\7-Zip\7z.exe" l "D:\111\test.zip"
pause

в архив записывает все 6 файлов:
------------------- ----- ------------ ------------ ------------------------
test test\2.txt
test test\test test\4.txt
test test\test test\test test\5.txt
test test\test test\test test\test\6.txt
test\1.txt
test\test test\3.txt
------------------- ----- ------------ ------------ ------------------------
6 files

но нужно в маске поиска файлов указать поиск в разных папках "111", "112", "113", "114 5" (весь список папок я не знаю изначально, но у них общее "11" в начале названия папки и может быть пробел), а с "D:\111\*.txt" я не могу указать список папок (exclude) в которых не надо искать.

меняю "D:\111\*.txt" на "D:\11*\*.txt" и не находит ничего (как и "D:\*11*\*.txt")

Казбек
27-03-2018, 14:36
Neformat,

Для исключения:
7z.exe a -t7z archive.7z folder\ -mx0 -xr!exclude1 -xr!exclude2
folder - папка, в которой будет производится поиск подпапок
exclude1, exclude2 - названия папок, которые будут рекурсивно исключены

Neformat
27-03-2018, 15:29
исключения я не могу описать т.к. не знаю весь список папок изначально, знаю только, что в корне диска D находятся "111", "112", "113", "114 5" и тп
прописываю маску "11*" и она (звездочка) работает до слеша, т.е. чтобы найти все 6 файлов надо написать маски:

"D:\11*\*.txt"
"D:\11*\*\*.txt"
"D:\11*\*\*\*.txt"
"D:\11*\*\*\*\*.txt"

т.е. он слеш воспринимает как конечную папку и в подпапку не идет

так - "D:\111\*.txt" заходит в подпапки.

можно научить его читать все слеши одной маской?

megaloman
27-03-2018, 16:24
Neformat, По уточненной постановке в Вашем предыдущем посте@Echo Off

Set "BoxIn=D:"
Set "MaskDir=11?"
Set "MaskFile=*.txt"
Set "ArcName=D:\111\test.zip"

Set "Arc="C:\Program Files\7-Zip\7z.exe" a -r -tzip -ssw -spf"

FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\%MaskDir%" /B /A:D`) DO (
%Arc% "%ArcName%" "%BoxIn%\%%d\%MaskFile%"
)

Neformat
27-03-2018, 18:24
без цикла никак тогда?




© OSzone.net 2001-2012