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

Аватара пользователя
Anufriev

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

Сообщение Anufriev »

добрый день!



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
Аватара пользователя
Bob256

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение Bob256 »

Хотя GGMMDD по идее должно звучать YYMMDD...



PHP код:

Код: Выделить всё

@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 



Аватара пользователя
Anufriev

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение Anufriev »

Цитата:



может Код: .... (dir "%2" "%3"|>nil)&&(

....

C:\ARJ32\ARJ32.exe a -e "%NewName%" "%2" "%3"



еще веселееИзображение




Цитата:



Непредвиденное появление: ).
Аватара пользователя
Bob256

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение Bob256 »

Цитата Bob256:



call :SUB0001 C:testA12345 C:test2SBC*_*_*_1* C:test2SBC*_*_*_2*

call :SUB0001 C:testB12345 C:test2SBC*_*_*_3* C:test2SBC*_*_*_4*
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация




Тут всё верно, обратный слеш не забыли?




Цитата Anufriev:



да и если честно, батник какой то странный...
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация




Что именно странно?
Аватара пользователя
Anufriev

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение Anufriev »

Цитата 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
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация




teg PHP слеши режет... не думал что всё так запущено...
Аватара пользователя
Anufriev

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение Anufriev »

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



с текстом:



Том в устройстве C не имеет метки.

Серийный номер тома: E1AB-11B2



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





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



да и если честно, батник какой то странный...
Аватара пользователя
yurfed

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение yurfed »

все не так запущеноИзображение слеши не помогаютИзображение точнее не в них дело

архиватор пытается найти 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



Файл не найден
Аватара пользователя
Bob256

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение Bob256 »

Цитата Bob256:



не думал что всё так запущено...
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация




Это ирония?




Цитата Anufriev:



Long filenames enabled
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация




Может тут собака наделала?

Почему вам обязательно нужен ARJ
Аватара пользователя
yurfed

Re: CMD/BAT - [решено] сканирование папки на наличие файла и его архивация

Сообщение yurfed »

@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

Вроде нормально.

Не очень понятно... Это ирония или просто великий и могучий?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»