|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сканирование папки на наличие файла и его архивация |
|
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация
|
Пользователь Сообщения: 102 |
Профиль | Отправить PM | Цитировать
добрый день!
1. есть такая задачка, нужно что бы батник сканировал папку с:\test\ 1.1. при обнаружении файла формата SBC000000000_000000000000_0000000000000000_100 или SBC000000000_000000000000_0000000000000000_200 нужно запаковать его в архив arj формата A12345GGMMDDnn.arj 1.2. при обнаружении файла формата SBC000000000_000000000000_0000000000000000_300 или SBC000000000_000000000000_0000000000000000_400 нужно запаковать его в архив arj формата B12345GGMMDDnn.arj где: 0 переменное число; 2. отработать команду "C:\ARJ32\ARJ32.exe m -e C:\test\#(зависит от пунктов 1.1 и 1.2)12345GGMMDDnn.arj C:\test2\SBC*_*_*_1(зависит от пунктов 1.1 и 1.2)*" GGMMDD - год, месяц, день; nn - порядковый номер созданного файла в течение дня (2 символа). Нумерация начинается с 01. Батник который получился: @echo off setlocal enabledelayedexpansion :L0001 set GGMMDD=%date:~-2,2%%date:~3,2%%date:~0,2% call :SUB0001 C:\test\A12345%GGMMDD% C:\test2\SBC*_*_*_1* C:\test2\SBC*_*_*_2* call :SUB0001 C:\test\B12345%GGMMDD% C:\test2\SBC*_*_*_3* C:\test2\SBC*_*_*_4* ping 127.0.0.1>nul goto L0001 exit /b 0 :SUB0001 for %%F in (%2 %3) do (for /L %%N in (99,-1,1) do (if %%N LEQ 9 (set NN=0%%N) else set NN=%%N if not exist "%1!NN!.arj" set NewName=%1!NN!.arj ) C:\ARJ32\ARJ32.exe m -e "!NewName!" "%%~dpnxF" ) exit /b 0 |
|
Отправлено: 14:57, 12-09-2012 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
|
||
Отправлено: 09:58, 13-09-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Цитата Anufriev:
|
|
Отправлено: 10:00, 13-09-2012 | #12 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать в таком случае появляется файл nil с текстом
Том в устройстве C не имеет метки. Серийный номер тома: E1AB-11B2 Содержимое папки C:\test2 Содержимое папки C:\test2 |
Отправлено: 10:02, 13-09-2012 | #13 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:12, 13-09-2012 | #14 |
Ветеран Сообщения: 20132
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 10:18, 13-09-2012 | #15 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Ты прав
Цитата Bob256:
архив то он все равно не создает если C:\ARJ32\ARJ32.exe a -e %NewName% %2 %3 изменить на C:\ARJ32\ARJ32.exe a -e NewName %2 %3 то он начнет работать, создаст архив, но естественно не будет имя ему генерировать а если сделать обходной путь, сначала архивировать, а потом переименовывать этот архив? |
|
Последний раз редактировалось Anufriev, 13-09-2012 в 10:39. Отправлено: 10:32, 13-09-2012 | #16 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать @echo off setlocal enabledelayedexpansion for /f "tokens=1,2,3 delims=." %%I in ('date /t') do (set /a GGMMDD="%%K - (%%K / 100) * 100" set GGMMDD=!GGMMDD!%%J%%I ) call :SUB0001 C:\test\A12345%GGMMDD% C:\test2\SBC*_*_*_1* C:\test2\SBC*_*_*_2* call :SUB0001 C:\test\B12345%GGMMDD% C:\test2\SBC*_*_*_3* C:\test2\SBC*_*_*_4* exit /b 0 :SUB0001 (dir %2 %3 >nul)&&(for /L %%N in (9,-1,1) do (if %%N LEQ 9 (set NN=0%%N) else set NN=%%N if not exist %1!NN!.arj set NewName=%1!NN!.arj ) C:ARJ32ARJ32.exe a -e !NewName! %2 %3 ) exit /b 0 |
Последний раз редактировалось Bob256, 13-09-2012 в 11:06. Причина: Опять слеши Отправлено: 11:04, 13-09-2012 | #17 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать прекрасно, это помогло
только теперь появляется вопросик: в папке находится несколько файлов формата SBC*_*_*_1*, SBC*_*_*_2* и он их пакует в один архив, а нужно что бы в разные файлы формата SBC*_*_*_3* и SBC*_*_*_4* запаковал в другой архив но тоже пачкой p.s. похоже я косячнул не сказав, что нужно каждый файлик в отдельный архив, в самом начале |
Последний раз редактировалось Anufriev, 13-09-2012 в 11:27. Отправлено: 11:20, 13-09-2012 | #18 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:26, 13-09-2012 | #19 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать простите, но я довольно таки дуб в этом и я не знаю куда воткнуть данную строчку
|
Отправлено: 11:31, 13-09-2012 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Батник проверяющий наличие файла на сервере? | ofcoss | Скриптовые языки администрирования Windows | 3 | 29-07-2009 06:03 | |
CMD/BAT - [решено] Проверить наличие файла с текущей датой. | OlegStarov | Скриптовые языки администрирования Windows | 4 | 21-04-2009 12:11 | |
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? | mitiya | Скриптовые языки администрирования Windows | 2 | 27-06-2008 20:50 | |
Разное - Архивация файла | UnDRaux | Microsoft Windows 2000/XP | 3 | 03-05-2008 00:10 | |
Сканирование HDD на наличие bad секторов | dimon55 | Хочу все знать | 5 | 15-12-2003 15:36 |
|