Вы можете использовать -i
переключатель с 7-Zip для этого. Например, следующая модификация вашего командного файла будет извлекать только.txt
файлы.
@ECHO ON SET source=C:\Users\user\Desktop\test FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.zip"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"C:\Users\user\Desktop\Working\Custom Textures\*" -ir!*.txt FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.7z"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"C:\Users\user\Desktop\Working\Custom Textures\*" -ir!*.txt FOR /F "TOKENS=*" %%F IN ('DIR /S /B "%source%\*.rar"') DO "C:\Program Files\7-Zip\7z.exe" x "%%~fF" -o"C:\Users\user\Desktop\Working\Custom Textures\*" -ir!*.txt PAUSE
Вот еще немного информации из документации :
-i (Включить имена файлов) переключатель
Определяет дополнительные имена файлов и символы подстановки.
Поддерживаются несколько включаемых ключей.
Синтаксис
-i[<recurse_type>]<file_ref> <recurse_type> ::= r[- | 0] <file_ref> ::= @ | !
параметры
<recurse_type>
Указывает, как подстановочные знаки и имена файлов в этом ключе должны использоваться. Если эта опция не указана, будет использовано глобальное значение, назначенное параметром -r (Recurse). Для получения дополнительной информации см. Спецификацию переключателя -r (Recurse).
<recurse_type> ::= r[- | 0]
<file_ref>
Задает имена файлов и подстановочные знаки или файл списка для файлов, которые будут обрабатываться.
<file_ref> ::= @ | ! Option Description Specifies name of list file. See List file description. Specifies wildcard or filename.
Примеры
7z a -tzip src.zip *.txt -ir!DIR1\*.cpp
добавляет в архив src.zip все файлы * .txt из текущего каталога и все файлы * .cpp из каталога DIR1 и из всех его подкаталогов.