Код не работает для проверки размера файла в пакетном файле - PullRequest
0 голосов
/ 06 марта 2012
:loop2
ping 1.1.1.1 -n 1 -w 10000 >nul
for %%I in (mesh0.1bb_intact.f06) do set %%checka=%%~zI
ping 1.1.1.1 -n 1 -w 20000 > nul
for %%I in (mesh0.1bb_intact.f06) do set %%checkb=%%~zI
IF NOT %checkb% EQU %checka% goto :loop2

Это в командном файле, и я получил его, чтобы назначить checka и checkb с помощью двойного %%.Но как я могу исправить, если нет?Если они не равны, тогда подождите, пока они не станут равными ... если эффективно, что я хочу, чтобы мой код делал.Но это только заканчивается в заявлении IF, вероятно, говоря, что в настоящее время бла-бла-бла не ожидается (я не знаю, потому что он закрывается слишком быстро) Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

Вы не знаете, когда использовать %%. Когда вы устанавливаете переменную окружения, вы set varName=value. Ваше varName - просто строка,% не требуется. Ваше значение находится в переменной FOR I, вы находитесь в командном файле, поэтому вы используете %%~zI.

:loop2
ping 1.1.1.1 -n 1 -w 10000 >nul
for %%I in (mesh0.1bb_intact.f06) do set checka=%%~zI
ping 1.1.1.1 -n 1 -w 20000 > nul
for %%I in (mesh0.1bb_intact.f06) do set checkb=%%~zI
IF NOT %checkb% EQU %checka% goto :loop2
1 голос
/ 06 марта 2012

В качестве альтернативного метода см. HELP SET и HELP CALL и попробуйте следующий код ...

call :getfilesize file1 checka
call :getfilesize file2 checkb
IF %checka% LSS %checkb% (
  echo size of file1 %checka% less than size of file2 %checkb%
) ELSE (
  echo size of file1 %checka% greater than or equal size of file2 %checkb%
)
goto :eof
:getfilesize
set %2=%~z1
goto :eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...