|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - распаковать все файлы с расширением 7z в каталог, содержащий текущую дату |
|
CMD/BAT - распаковать все файлы с расширением 7z в каталог, содержащий текущую дату
|
Новый участник Сообщения: 2 |
Здравствуйте.
Требуется помощь в написании bat-файл. Задача: из заданного в командной строке каталога распаковать все файлы с расширением 7z в каталог, содержащий текущую дату. Используя цикл FOR, ввести проверку ошибок: в каталоге нет ни одного файла с расширением 7z. Своими силами написал следующий код код: cls set exist=1 for %%f in ("%USERPROFILE%"\"Рабочий стол"\bat\batnik.7z) do "C:\Program Files\7-Zip\7z.exe" x %1 -oc:\mybatcatalog\"%date%" set exist=0 if %exist%==0 echo Нет ни одного файла с расширением 7z Заранее благодарен. P.S. Требуется реализация именно через for, ни как иначе. |
|
Отправлено: 20:42, 21-03-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sylest:
Примерно так (если не брать извращения с проверкой наличия файлов по «for» вместо «exist»): |
|
Отправлено: 21:52, 21-03-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
|
||
Отправлено: 22:06, 21-03-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Я даже не особо представляю, как сие может выглядеть. Ну, давайте попробуем прикрутить «for» искусственно, например:
|
Отправлено: 01:59, 22-03-2012 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Iska
1 Добавил в конец Pause, иначе не мог увидеть сообщений 2 Запуск батника производил без параметров, поэтому исправил (только для тестов) строку 2.1 На Win7 x64 получил Can't find path to 7-Zip executive хотя 7-Zip у меня разумеется стоит и ключи на месте. 2.2 На Win XP получил Can't find 7-Zip executive in [c:\Program Files\7-Zip] Причина: разные инсталляторы 7-Zip по разному пишут путь в реестр, msi пишут с завершающим слешем, а exe без оного. 3 Присвоение переменной %PathTo7Zip% оригинально, но для начинающих будет непонятно. К тому же при любом (без знаний метода формирования переменной) изменении имени переменной и\или имени п\п :GetPathTo7Zip приведет к непредсказуемым результатам. 4 После того как подправил получение пути батник заработал, но... 4.1 При отсутствии архивов в папке сообщение Not found any 7-zip archivies in [%sFolder%] не вывелось 4.2 После добавления в папку запароленного архива (получилось это случайно), батник на нем остановился для ввода пароля. Ввел неправильный пароль (правильный просто не помню) и получил сообщение Not found any 7-zip archivies in [E:\Temp\] 4.2.1 Но если этот запароленный архив не будет последним в списке обрабатываемых архивов, то сообщение снова не выводится Немного подправил Ваш вариант и получилось это: @Echo Off Setlocal EnableExtensions Set sFolder=%~1 :: Set sFolder=%~dp0 Set "flag=" Set "PathTo7Zip=" If Not Defined sFolder Call :_abort "Usage: %~nx0 [Path]" If "%sFolder:~-1%"=="\" Set sFolder=%sFolder:~0,-1% For %%i In ("%sFolder%\*.7z") Do Set flag=1 If Not Defined flag Call :_abort "Not found any 7-zip archivies in [%sFolder%]" For /f "tokens=2*" %%i In ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip" /v "Path" 2^>nul') Do Set PathTo7Zip=%%j If Not Defined PathTo7Zip Call :_abort "Can't find path to 7-Zip executive" If Not "%PathTo7Zip:~-1%"=="\" Set PathTo7Zip=%PathTo7Zip%\ If Not Exist "%PathTo7Zip%7z.exe" Call :_abort "Can't find 7-Zip executive in [%PathTo7Zip%]" For %%i In ("%sFolder%\*.7z") Do "%PathTo7Zip%7z.exe" x "%%~fi" -o%date% -y -ppassword>nul Call :_abort "Unpacking is complete" :_abort Echo. Echo %~1 Echo. Pause Endlocal Exit |
|
Последний раз редактировалось gora, 22-03-2012 в 12:04. Отправлено: 10:16, 22-03-2012 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Как получить текущую дату и время в интернете? | white155 | Скриптовые языки администрирования Windows | 8 | 29-05-2012 04:00 | |
CMD/BAT - копирование файлов за текущую дату с сервера на сервер | 6a6yko | Скриптовые языки администрирования Windows | 10 | 21-06-2011 13:00 | |
нужно чтобы все графические файлы отображались с расширением jpg а не bmp | Полосатый 777 | Хочу все знать | 2 | 29-04-2011 12:13 | |
CMD/BAT - файлы вида mmdd*.* - для каждой даты нужно создать каталог, скопировать, файлы | milito | Скриптовые языки администрирования Windows | 2 | 24-05-2009 23:32 | |
Не удаётся распаковать закачанные файлы аудиокниг | vladisk | Видео и аудио: обработка и кодирование | 3 | 02-09-2007 19:00 |
|