Я пытаюсь переименовать содержимое zip-файла, чтобы оно совпадало с именем zip-файла и командным файлом.
Это именно то, что я пытаюсь сделать: https://stackoverflow.com/questions/22853824/zip-file-to-unzip-and-rename-files-and-zip-back/25732864#25732864
это работает, но только если файлы zip не имеют пробела в имени файла. В противном случае он создает кучу пустых папок, где в имени файла zip появляется пробел.
Ответ Фила V работает хорошо, но я думаю, что его нужно немного уточнить:
:: # Core Logic
:: # Looping through all the zips
for %%c in (*.zip) do (
:: # Make a temporary folder with the same name as zip to house the zip content
if not exist %%~nc md %%~nc
:: # Extracting zip content into the temporary folder
7z e -o%%~nc %%c
if exist %%~nc (
:: # Jump into the temporary folder
pushd %%~nc
if exist *.* (
:: Loop through all the files found in the temporary folder and prefix it with the zip's name
for %%i in (*.*) do (
ren %%i %%~nc.%%i
)
:: # Zip all the files with the zip prefix with orginal zip name but with a number 2 (abc2.zip)
if exist %%~nc.* (
7z a -tzip %%~nc2 %%~nc.*
)
:: # Move the new zip back out of the tempory folder
if exist %%~nc2.zip move %%~nc2.zip ..
)
:: # Jump out of the temporary folder
popd
:: # Showing you the directory listing
dir
:: # Showing you the content inside the new zip
7z l %%~nc2.zip
:: # Remove the temporary folder (Clean up)
rd /s/q %%~nc
)
)
Обновление: ОК, работает с помощью веб-маркета (см. Решение ниже).
Потребовалось несколько проб и ошибок, но в конце концов я выяснил, где нужны кавычки, чтобы заставить работать так, как мне нужно. Точно так же, как webmarc сказал: «ставьте кавычки вокруг любых других аргументов в вашей программе, которые могут иметь встроенные пробелы».