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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сложная проверка условия

Ответить
Настройки темы
CMD/BAT - [решено] Сложная проверка условия

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


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

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


Имеется такой код:
Код: Выделить весь код
    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."

Отправлено: 20:29, 29-08-2012

 

Ветеран


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

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


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

Отправлено: 20:56, 29-08-2012 | #2



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

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


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


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

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


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

Отправлено: 21:20, 29-08-2012 | #3


Ветеран


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

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


Цитата murmax-91:
Со скобками тоже самое( »
Ну а переменные определены? По твоему примеру можно только гадать.

Отправлено: 22:42, 29-08-2012 | #4


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


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

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


Вот весь код....
читать дальше »
Код: Выделить весь код
@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

Отправлено: 22:45, 29-08-2012 | #5


Ветеран


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

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


Вот что сразу бросилось в глаза.
Цитата murmax-91:
set d=%%~ti
set dat=%d:~0,2%
У тебя не определена переменная %dat%. В твоем случае надо:
Код: Выделить весь код
set dat=!d:~0,2!

if !dat! LEQ 15 (

Отправлено: 23:43, 29-08-2012 | #6


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


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

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


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

Последний раз редактировалось murmax-91, 30-08-2012 в 07:45.


Отправлено: 07:33, 30-08-2012 | #7


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


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

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


Вот рабочий код для истории:
читать дальше »
Код: Выделить весь код
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%

Отправлено: 21:37, 30-08-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сложная проверка условия

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Проверка условия Доктор Ливси Скриптовые языки администрирования Windows 11 19-01-2012 16:01
VPN - [решено] OpenVpn+2 подсети. Сложная Маршрутизация. mAj3st1 Сетевые технологии 4 27-10-2011 08:04
Route/Bridge - Сложная задача для домашнего роутера maxsoff Сетевые технологии 1 29-01-2011 07:50
Сложная ситуация... Windows 98 SE на ASUS P4C800E-Deluxe Nuklies Microsoft Windows 95/98/Me (архив) 4 15-07-2005 21:06
сложная выборка на XSLT Vlad Drakula Вебмастеру 6 27-05-2005 00:13




 
Переход