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

Dremuk 28-01-2010 14:22 1332358

Не могу найти ошибку
 
Такая задача: нужно скопировать файлы созданные в четверг или пятницу прошлого года с диска С на E. Не работает. Причем во внутренний цикл не передается переменная DoW и NN не хочет устанавливаться. ПОМОГИТЕ исправить ошибку, пожалуйста

@ECHO OFF
ECHO.
CLS

for /r C:\ %%A in (*.*) do (

@for /F "eol= skip=5 tokens=1-3 delims=." %%B IN ('DIR "%%A"') DO (

@for /F "tokens=1" %%E IN ('echo "%%D"') DO (
IF %iDate%==0 CALL :DoW %%C %%B %%E
IF %iDate%==1 CALL :DoW %%B %%C %%E
IF %iDate%==2 CALL :DoW %%E %%C %%B


rem Определяем текущий день недели по готовому алгоритму
SET NN=%%E
SET /A Day=4
SET /A Run=0
rem Устанавливаем запуск по четвергам и пятницам

IF "%Day%"=="4" SET /A Run=1
IF "%Day%"=="5" SET /A Run=1
IF not "%NN%"=="%YYear%" SET /A Run=0

echo %%A %%B %%C %Day% %Run% %YYear% %NN%

IF "%Run%"=="1" xcopy %%A E:\

)
)
)

GOTO:EOF

:: алгоритм вычисления дня недели прошлого года
:DoW
SET /A Data=%1
SET /A Month=%2
SET /A Year=%3
IF %Month% GTR 2 (SET /A Month=%Month%-3) ELSE (SET /A Year=%Year%-1 & SET /A Month=%Month%+9)
SET /A ta=146097*((%Year%) /100)/4
SET /A tb=1461*(%Year% %% 100)/4
SET /A tc=(153*%Month%+2)/5+%Data%+1721119
SET /A DoW = (%ta%+%tb%+%tc%) %% 7 + 1
SET DoW=%DoW%
GOTO:EOF

amel27 28-01-2010 15:35 1332457

Цитата:

Цитата Dremuk
во внутренний цикл не передается переменная DoW и NN не хочет устанавливаться »

Как будто скрипт "сшит" из разных кусков, которые не подогнали друг к дружке - например, переменная iDate используется, но значение ей нигде не присваивается, а должно считываться из реестра... и по ходу тут не одна ошибка... да и файлы копируются не с "диска", как указано, а всего с одного каталога (текущего)... Для начала, оформите свой топик согласно правилам (п.2.7), заключите код в теги [code] и конкретизируйте задачу (часто из-за одной неточности в формулировке приходится переписывать весь батник)


Время: 01:59.

Время: 01:59.
© OSzone.net 2001-