Уровень ошибки команды, выполняемой пакетом для цикла - PullRequest
7 голосов
/ 22 июня 2010

Следующий код всегда отображает 0 как уровень ошибки, но когда команда копирования выполняется вне команды цикла for, он возвращает ненулевой уровень ошибки.

for /f "usebackq delims=" %%x in (`copy x y`) do (
    set VAR=%%x
)
ECHO Errorlevel = %ERRORLEVEL%
ECHO VAR = %VAR%

Возможно получить уровень ошибкикоманда копирования, выполненная циклом for?

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

это работает для меня!Вам нужно только поместить проверку ошибок в скобки DO с текстовым файлом, содержащим команды копирования (7200 строк; например: copy 2_97691_Scan.pdf O: \ Data \ Dev \ Mins \ PDFScan2 \ 2011 \ 4 \ 2_97691_Scan.pdf)Я могу запустить следующий пакетный файл

@echo off

setlocal EnableDelayedExpansion

for /F "delims=" %%I in (CopyCurrentPDFs.txt) do (
%%I
if !errorlevel! NEQ 0 echo %%I>>errorcopy.txt
)
1 голос
/ 22 июня 2010

Я предполагаю, что вы копируете файлы из одного каталога в другой?Если это так, вы могли бы сделать что-то вроде этого:

@echo off

setlocal EnableDelayedExpansion

set ERR=0

for %%x in (x) do (

    copy %%x y
    set ERR=!errorlevel!

    set VAR=%%x
)
ECHO Errorlevel = %ERR%
ECHO VAR = %VAR%

Отложенное расширение требуется, чтобы получить действительное значение уровня ошибки внутри цикла вместо значения до его ввода.* Если это не то, что вы пытаетесь сделать, пожалуйста, уточните вашу цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...