Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Ответить
Настройки темы
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Anufriev
Дата: 14-09-2012
добрый день!

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
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата:
может Код: .... (dir "%2" "%3"|>nil)&&(
....
C:\ARJ32\ARJ32.exe a -e "%NewName%" "%2" "%3"
еще веселее

Цитата:
Непредвиденное появление: ).

Отправлено: 09:58, 13-09-2012 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 49
Благодарности: 14

Профиль | Отправить PM | Цитировать


Цитата Anufriev:
Непредвиденное появление: ). »
Код: Выделить весь код
(dir "%2" "%3">nil)&&(

Отправлено: 10:00, 13-09-2012 | #12


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


в таком случае появляется файл nil с текстом


Том в устройстве C не имеет метки.
Серийный номер тома: E1AB-11B2

Содержимое папки C:\test2


Содержимое папки C:\test2

Отправлено: 10:02, 13-09-2012 | #13


Новый участник


Сообщения: 49
Благодарности: 14

Профиль | Отправить PM | Цитировать


моя вина
Код: Выделить весь код
(dir "%2" "%3" >nul)&&(
глаз замылился от разных языков

Отправлено: 10:12, 13-09-2012 | #14


Аватара для yurfed

Ветеран


Сообщения: 20132
Благодарности: 3144

Профиль | Отправить PM | Цитировать



Цитата yurfed:
Почему вам обязательно нужен ARJ »
Цитата Anufriev:
потому что это требование организации куда будет отправляться файл, и поспорить с этим нельзя »
Это банковские работники Сталкивался.

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 10:18, 13-09-2012 | #15


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ты прав

Цитата Bob256:
Код:
(dir "%2" "%3" >nul)&&(
глаз замылился от разных языков »
да это не страшно, проблемка все равно не в этом
архив то он все равно не создает

если 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
Благодарности: 14

Профиль | Отправить 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
Благодарности: 1

Профиль | Отправить PM | Цитировать


прекрасно, это помогло
только теперь появляется вопросик:
в папке находится несколько файлов формата SBC*_*_*_1*, SBC*_*_*_2* и он их пакует в один архив, а нужно что бы в разные
файлы формата SBC*_*_*_3* и SBC*_*_*_4* запаковал в другой архив но тоже пачкой

p.s. похоже я косячнул не сказав, что нужно каждый файлик в отдельный архив, в самом начале

Последний раз редактировалось Anufriev, 13-09-2012 в 11:27.


Отправлено: 11:20, 13-09-2012 | #18


Новый участник


Сообщения: 49
Благодарности: 14

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
call :SUB0001 "куда пакуем" "что пакуем"

Отправлено: 11:26, 13-09-2012 | #19


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


простите, но я довольно таки дуб в этом и я не знаю куда воткнуть данную строчку

Отправлено: 11:31, 13-09-2012 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход