Я продолжаю получать свои файлы в формате, подобном «Foobar.txt.7z»
for /r %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X"
Вам нужно удалить расширение из %%X
Вы можете сделать это используя выражение %%~nX
:
for /r %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%~nX.7z" "%%X"
Однако, если вы сделаете это, у вас могут возникнуть проблемы, если существует несколько файлов с одинаковыми именами, но с разными расширениями. Например, в моем тестовом каталоге у меня есть файлы со следующими именами:
> dir /b test.*
test.cmd
test.ps1
test.sh
test.txt
Используя следующее в командном файле:
for /r %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%~nX.7z" "%%X"
Будет производить следующее для вышеуказанных файлов:
"c:\Program Files\7-Zip\7z.exe" a "test.7z" "F:\test\test.cmd"
"c:\Program Files\7-Zip\7z.exe" a "test.7z" "F:\test\test.ps1"
"c:\Program Files\7-Zip\7z.exe" a "test.7z" "F:\test\test.sh"
"c:\Program Files\7-Zip\7z.exe" a "test.7z" "F:\test\test.txt"
Вам нужно будет найти способ справиться с любыми такими дублирующимися именами архивов, если только вы не хотите добавлять несколько файлов в один архив.
Из командной строки вы можете заменить %%
на %
следующим образом:
for /r %X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%~nX.7z" "%X"
Дальнейшее чтение