|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сканирование папки на наличие файла и его архивация |
|
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация
|
Пользователь Сообщения: 102 |
добрый день!
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 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Если надо SBC*_*_*_1* в A12345GGMMDD(NN) а SBC*_*_*_2* в A12345GGMMDD(NN+1), SBC*_*_*_3* в B12345GGMMDD(NN), SBC*_*_*_4* в A12345GGMMDD(NN+1) то
@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* call :SUB0001 C:\test\A12345%GGMMDD% C:\test2\SBC*_*_*_2* call :SUB0001 C:\test\B12345%GGMMDD% C:\test2\SBC*_*_*_3* call :SUB0001 C:\test\B12345%GGMMDD% C:\test2\SBC*_*_*_4* exit /b 0 :SUB0001 (dir %2 >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 ) exit /b 0 |
Отправлено: 12:08, 13-09-2012 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать нужно что бы SBC*_*_*_1* или SBC*_*_*_2* в A12345GGMMDD(NN), потом SBC*_*_*_1*+1 или SBC*_*_*_2*+1 в A12345GGMMDD(NN+1) и так далее,
нужно что бы SBC*_*_*_3* или SBC*_*_*_4* в B12345GGMMDD(NN), потом SBC*_*_*_3*+1 или SBC*_*_*_4*+1 в B12345GGMMDD(NN+1) и так далее, но может и оказаться что цифра измениться и тут SBC*_*+1_*_1* и следовательно этот файл должен быть запакован в отдельный архив... то есть, каждый файлик в отдельный архив значение (NN) должно зависеть от любого изменения имени файла |
Последний раз редактировалось Anufriev, 13-09-2012 в 12:36. Отправлено: 12:20, 13-09-2012 | #22 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать С этого места поподробней. Дай список файлов и желаемое распределение по архивам
|
Отправлено: 12:26, 13-09-2012 | #23 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать SBC014552362_503820120814_0391001412000068_100.txt => A12345GGMMDD(01)
SBC014552362_503820120816_0391001412000071_400.txt => B12345GGMMDD(01) SBC014552362_503820120821_0391001412000075_200.txt => A12345GGMMDD(02) SBC014552362_503820120824_0391001412000077_300.txt => B12345GGMMDD(02) SBC214552362_503820120817_0391001412000072_100.txt => A12345GGMMDD(03) но файлы постоянно появляются новые с абсолютно разными цифрами в наименовании, и предугадать какой появиться я не могу ![]() |
Отправлено: 12:39, 13-09-2012 | #24 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать И чем не устраивает последний вариант?
|
Отправлено: 13:07, 13-09-2012 | #25 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать тем что если появилось два файла с окончанием 100 он запакует их в один архив
![]() |
Отправлено: 13:10, 13-09-2012 | #26 |
![]() Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Может, разбить эти файлы на 2 массива и упаковку делать уже циклом по элементам массива?
|
Отправлено: 13:11, 13-09-2012 | #27 |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать Итого имеем:
|
Отправлено: 14:39, 13-09-2012 | #28 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать дата текущая
те файлы которые уже упакованы их там уже нет, то есть удаляются сразу |
Отправлено: 14:47, 13-09-2012 | #29 |
Новый участник Сообщения: 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 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:ARJ32ARJ32.exe a -e "!NewName!" "%%~dpnxF" del /q "%%~dpnxF" ) exit /b 0 |
Отправлено: 15:26, 13-09-2012 | #30 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|