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

Компьютерный форум 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

 

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


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

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


Хотя GGMMDD по идее должно звучать YYMMDD...
PHP код: Выделить весь код

@echo off
setlocal enabledelayedexpansion
for /"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:testA12345 C:test2SBC*_*_*_1C:test2SBC*_*_*_2*
call :SUB0001 C:testB12345 C:test2SBC*_*_*_3C:test2SBC*_*_*_4*
exit /
b 0

:SUB0001
(dir %%3>nil)&&(
  for /
%%N in (99,-1,1) do (if %%N LEQ 9 (set NN=0%%N) else set NN=%%N
    
if not exist %1%GGMMDD%!NN!.arj set NewName=%1%GGMMDD%!NN!.arj
  
)
  
C:ARJ32ARJ32.exe a -%NewName% %%3
)
exit /
b 0 

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:32, 12-09-2012 | #2



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

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


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


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

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


создает файл с именем nil, архив не создает

с текстом:

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

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


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

да и если честно, батник какой то странный...

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


Аватара для yurfed

Ветеран


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

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


Цитата Bob256:
call :SUB0001 C:testA12345 C:test2SBC*_*_*_1* C:test2SBC*_*_*_2*
call :SUB0001 C:testB12345 C:test2SBC*_*_*_3* C:test2SBC*_*_*_4* »
Тут всё верно, обратный слеш не забыли?

Цитата Anufriev:
да и если честно, батник какой то странный... »
Что именно странно?

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


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


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


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

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


Цитата Bob256:
call :SUB0001 C:\test\A12345 C:\test2\SBC*_*_*_1* C:\test2\SBC*_*_*_2*
call :SUB0001 C:\test\B12345 C:\test2\SBC*_*_*_3* C:\test2\SBC*_*_*_4*
......
C:\ARJ32\ARJ32.exe a -e %NewName% %2 %3»
teg PHP слеши режет... не думал что всё так запущено...

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


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


Аватара для yurfed

Ветеран


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

Профиль | Отправить 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:\testA12345 C:test2SBC*_*_*_1* C:test2SBC*_*_*_2*
call :SUB0001 C:\testB12345 C:test2SBC*_*_*_3* C:test2SBC*_*_*_4*
exit /b 0

:SUB0001
(dir %2 %3>nil)&&(
  for /L %%N in (99,-1,1) do (if %%N LEQ 9 (set NN=0%%N) else set NN=%%N
    if not exist %1%GGMMDD%!NN!.arj set NewName=%1%GGMMDD%!NN!.arj
  )
  C:\ARJ32ARJ32.exe a -e %NewName% %2 %3
)
exit /b 0
Вроде нормально.
Не очень понятно... Это ирония или просто великий и могучий?

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


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


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


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

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


все не так запущено слеши не помогают точнее не в них дело
архиватор пытается найти SBC*_*_*_1*.ARJ
получается %NewName% он не видит

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

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


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

12.09.2012 17:22 912 SBC014552362_503820120821_0391001412000075_200.txt
1 файлов 912 байт
0 папок 56*756*834*304 байт свободно
ARJ32 3.08a Copyright (c) 1990-2000 ARJ Software, Inc. Oct 11 2000
Registered to [xxx]

Long filenames enabled

Error (2): No such file or directory

Can't open C:\test2\SBC*_*_*_1*.ARJ
Том в устройстве C не имеет метки.
Серийный номер тома: E1AB-11B2

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


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

Файл не найден

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


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


Аватара для yurfed

Ветеран


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

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


Цитата Bob256:
не думал что всё так запущено... »
Это ирония?

Цитата Anufriev:
Long filenames enabled »
Может тут собака наделала?
Почему вам обязательно нужен ARJ

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


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


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


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


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

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


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

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


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


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

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


Цитата yurfed:
Это ирония? »
Это печаль.
Цитата yurfed:
C:\ARJ32ARJ32.exe a -e %NewName% %2 %3 »
может
Код: Выделить весь код
....
(dir "%2" "%3"|>nil)&&(
....
C:\ARJ32\ARJ32.exe a -e "%NewName%" "%2" "%3"

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



Компьютерный форум 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




 
Переход