![]() |
Распаковка с переименованием.
Здравствуйте.
Помогите решить такую задачку - Имеется много 7z архивов в них по несколько файлов с одинаковым расширением .smg Нужно распаковать или переименовать в самих архивах все файлы по типу имя_папки.smg или имя_папки_цифровой счетчик.smg Для zip и rar я просто делал for %%i in (*.zip) do "%ProgramFiles%\WinRar\winrar.exe" rn "%%i" "*.smg" "%%~ni.smg" но с 7z это не прокатывает. И еще может подскажите, как упаковать содержимое папок, именно их содержимого, а не чтобы в архиве была папка с содержимым, т.е. каждая папка это отдельный архив с именем этой папки и ее содержимым. Спасибо. |
1) Все архивы находятся в одной папке?
2) Я выбрал вариант "распаковать". Куда их распаковать? Что я должен сделать с файлами после распаковки? =-=-=-=-=-=-=-=-=-=-=-=-= VМожет, так? Код:
@echo off |
Все архивы в одной папке, распаковать тоже в эту же папку с архивами. После распаковки ничего, главное чтобы распаковывались все файлы .smg с именами своих архивов.
|
Тогда так.
Код:
@echo off |
Цитата:
Код:
@Echo Off |
Спасибо, большое за помощь.
|
Если можно подскажите, как подправить этот код
Код:
@Echo Off Спасибо. |
Цитата:
Вам нужно убрать включение отложенного расширения переменных ("setlocal enabledelayedexpansion") в начале кода, а затем попробовать варианты: 1) запускать команду в новом процессе с включённым отложенным расширением: Код:
cmd /v:on /c "If /I "!ta:~-3!"=="%ext%" 7z rn "%%i" "!ta:~53!" "%%~ni!cnt!.%ext%"" 2) использовать в команде модификатор "~x" и двойное расширение переменных: Код:
If /I "%%~xa"==".%ext%" call 7z rn "%%i" "%%ta:~53%%" "%%~ni%%cnt%%.%ext%" 3) можно вынести данную команду в отдельную процедуру. Работоспособность вариантов не проверял, так как на данный момент у меня архиватор "7-Zip" не установлен. Примечание: модификатор "~x" отделяет от значения переменной цикла или параметра последнюю точку и все символы, идущие за ней, даже если они не имеют никакого отношения к реальноиу файлу. Например, результатом выполнения в командной строке команды Код:
for /f %i in ("*|<.>?|") do @echo %~xi Код:
.>?| |
Спасибо за помощь, очень выручили!
Теперь все работает, как надо! |
Время: 21:13. |
Время: 21:13.
© OSzone.net 2001-