Сложная проверка условия
Имеется такой код:
Код:
if %dat% LEQ 15
if !s!==0 (
copy "%%i" %c_path% > nul
echo %c_path%\%%~nxi >> %SYSTEMDRIVE%\report.log
echo %c_path%\%%~nxi >> %lst%
set /a coun+=1
)
При выполнении пишет "Не предвиденное появление: 15."
|
murmax-91, Ты скобки забыл
|
Цитата:
Цитата murmax-91
Со скобками тоже самое( »
|
Ну а переменные определены? По твоему примеру можно только гадать.
|
Вот весь код....
читать дальше »
Код:
@echo off
PATH=%PATH%;%ProgramFiles%\WinRAR\
set outFile=%TEMP%\out.txt
set lst=%TEMP%\report.lst
call :FromNow -100
set c_path=D:\%ddmmyyyy%
if not exist %c_path% MkDir %c_path%
if exist %SYSTEMDRIVE%\report.log del %SYSTEMDRIVE%\report.log
if exist %lst%\report.lst del %lst%\report.lst
if exist %SYSTEMDRIVE%\%date%.rar del %SYSTEMDRIVE%\%date%.rar
set coun=0
setlocal enabledelayedexpansion
for /R "%SYSTEMDRIVE%\minecraft.pvp.gs" %%i in (*.*) do (
set d=%%~ti
set dat=%d:~0,2%
set /a s=!d:~1,1! %% 2
if %dat% LEQ 15 (
if !s!==0 (
copy "%%i" %c_path% > nul
echo %c_path%\%%~nxi >> %SYSTEMDRIVE%\report.log
echo %c_path%\%%~nxi >> %lst%
set /a coun+=1
)
)
)
EndLocal& set count=%coun%
rar a -df -idq -sl2097152 %SYSTEMDRIVE%\%date%.rar @%lst%
echo. >> %SYSTEMDRIVE%\report.log
echo Количество скопировенных файлов: %count% >> %SYSTEMDRIVE%\report.log
echo. >> %SYSTEMDRIVE%\report.log
echo. >> %SYSTEMDRIVE%\report.log
rar lb %SYSTEMDRIVE%\%date%.rar > %outFile%
echo Список файлов в архиве >> %SYSTEMDRIVE%\report.log
echo. >> %SYSTEMDRIVE%\report.log
set count=0
for /F %%i in (%outFile%) do (
echo %%i >> %SYSTEMDRIVE%\report.log
set /a count+=1
)
del %outFile% >nul
rem del %lst% >nul
echo. >> %SYSTEMDRIVE%\report.log
echo Количество файлов в архиве: %count% >> %SYSTEMDRIVE%\report.log
:FromNow
SetLocal
Set yyyy=%DATE:~-4%& set /a mm=100%DATE:~3,2%%%100& set /a dd=100%DATE:~,2%%%100
Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
Set /A J=J+2-12*L,I=100*(N-49)+I+L
Set /A yyyy=I,mm=100+J,dd=100+K
EndLocal& Set ddmmyyyy=%dd:~-2%.%mm:~-2%.%yyyy%
goto:eof
|
Вот что сразу бросилось в глаза.
Цитата:
Цитата murmax-91
set d=%%~ti
set dat=%d:~0,2%
|
У тебя не определена переменная %dat%. В твоем случае надо:
Код:
set dat=!d:~0,2!
if !dat! LEQ 15 (
|
Заработало, но условие не выполняется...
|
Вот рабочий код для истории:
читать дальше »
Код:
setlocal enabledelayedexpansion
for /R "%SYSTEMDRIVE%\minecraft.pvp.gs" %%i in (*.*) do (
set d=%%~ti
set dat=!d:~0,2!
set /a s=!d:~1,1! %% 2
if "!dat!" LEQ "15" (
@if !s!==0 (
copy "%%i" %c_path% > nul
echo %c_path%\%%~nxi >> %SYSTEMDRIVE%\report.log
echo %c_path%\%%~nxi >> %lst%
set /a coun+=1
)
)
)
EndLocal& set count=%coun%
|
Время: 03:44.
© OSzone.net 2001-