Как я могу архивировать несколько файлов без расширения файла origin?

Я пытаюсь запаковать несколько файлов, но постоянно с этой проблемой, что мой код не работает для. Вот такой код:

for /r %%X in (*) do "c:Program Files-Zipz.exe" a "%%X.7z" "%%X"

Я пытаюсь 7z несколько файлов в Каталоге, но я продолжаю получать мои файлы в формате, таком как " Foobar.формат txt.7z " но вместо этого я хотел бы, чтобы это был "Foobar.7z " у меня есть тысячи файлов, и я знаю, что это будет легко исправить, я просто не знаю, как.

5
задан DavidPostill
источник

2 ответов

я продолжаю получать мои файлы в формате, как " Foobar.формат txt.7z"

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%X.7z" "%%X"

вам нужно удалить расширение из %%X. Это можно сделать с помощью выражения %%~nX:

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%~nX.7z" "%%X"

однако, если вы сделаете это, у вас может возникнуть проблема, если есть несколько файлов с тем же именем, но разными расширениями. Например, в моем тестовом каталоге у меня есть файлы со следующими именами:

> dir /b test.*
test.cmd
test.ps1
test.sh
test.txt

использование следующего в пакете файл:

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%~nX.7z" "%%X"

произведет следующее для вышеуказанных файлов:

"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.cmd"
"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.ps1"
"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.sh"
"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.txt"

вам нужно будет выяснить способ борьбы с любыми такими дубликатами имен архивов, если вы не планируете добавлять несколько файлов в один и тот же архив.

из командной строки можно заменить %% С % следующим образом:

for /r %X in (*) do "c:\Program Files-Zipz.exe" a "%~nX.7z" "%X"

Читать Далее

1
отвечен DavidPostill 2017-07-21 20:42:35
источник

вы указываете полное имя файла .7z расширение в вашей команде. Давайте прекратим это делать:

for /r %X in (*) do "c:\Program Files-Zipz.exe" a "%~nX" "%X"

пояснение: Вы используете переменные DOS. % X является переменной. Существуют различные варианты DOS для управления переменными. "~N " выражает имя файла из переменной без расширения.

от:https://www.computerhope.com/forhlp.htm

%~nI разворачивает %I только до имени файла

1
отвечен HackSlash 2017-07-21 20:44:49
источник

Другие вопросы 7-zip batch command-line