Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сложная проверка условия (http://forum.oszone.net/showthread.php?t=241630)

murmax-91 29-08-2012 20:29 1979455

Сложная проверка условия
 
Имеется такой код:
Код:

    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."

Foreigner 29-08-2012 20:56 1979469

murmax-91, Ты скобки забыл

murmax-91 29-08-2012 21:20 1979478

Со скобками тоже самое(

Foreigner 29-08-2012 22:42 1979515

Цитата:

Цитата murmax-91
Со скобками тоже самое( »

Ну а переменные определены? По твоему примеру можно только гадать.

murmax-91 29-08-2012 22:45 1979518

Вот весь код....
читать дальше »
Код:

@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


Foreigner 29-08-2012 23:43 1979546

Вот что сразу бросилось в глаза.
Цитата:

Цитата murmax-91
set d=%%~ti
set dat=%d:~0,2%

У тебя не определена переменная %dat%. В твоем случае надо:
Код:

set dat=!d:~0,2!

if !dat! LEQ 15 (


murmax-91 30-08-2012 07:33 1979620

Заработало, но условие не выполняется...

murmax-91 30-08-2012 21:37 1980139

Вот рабочий код для истории:
читать дальше »
Код:

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.

Время: 03:44.
© OSzone.net 2001-