2010-06-21 17 views
6

Poniższy kod zawsze wyświetla 0 jako poziom błędu, ale gdy polecenie kopiowania zostanie wykonane poza poleceniem pętli for, zwraca poziom błędu niezerowy.Poziom błędu polecenia wykonanego partia dla pętli

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

Czy jest możliwe, aby uzyskać ERRORLEVEL polecenia kopii wykonanej przez pętli for?

Odpowiedz

1

Zakładam, że kopiujesz pliki z jednego katalogu do drugiego? Jeśli tak, można zrobić coś takiego zamiast:

@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% 

Opóźniony ekspansja jest wymagane, aby uzyskać rzeczywistą wartość errorlevel wewnątrz pętli zamiast wartości przed wprowadzeniem pętli.

Jeśli to nie jest to, co próbujesz zrobić, proszę wyjaśnić swój cel.

+0

próbuję analizować dane wyjściowe do pliku wykonywalnego (kopia jest tylko prosty przykład), ale chcę wiedzieć, czy to wykonywalne zwrócony błąd. – Josh

+0

Ok. Nie jestem pewien, czy można uzyskać poziom błędu dla polecenia wykonanego przez pętlę for bez rozdzielania ich jak w moim przykładzie, może ktoś inny może zapewnić lepszą odpowiedź. – WildCrustacean

4

to działa dla mnie! Trzeba tylko umieścić sprawdzanie błędów w nawiasach DO za pomocą pliku tekstowego zawierającego polecenia kopiowania (7200 linii, na przykład: copy 2_97691_Scan.pdf O: \ Data \ Dev \ Mins \ PDFScan2 \ 2011 \ 4 \ 2_97691_Scan. pdf), mogę uruchomić następujący plik wsadowy

@echo off 

setlocal EnableDelayedExpansion 

for /F "delims=" %%I in (CopyCurrentPDFs.txt) do (
%%I 
if !errorlevel! NEQ 0 echo %%I>>errorcopy.txt 
) 
+1

Ważną częścią jest "EnableDelayedExpansion" –

+0

Dziękuję - zadziałało to dla mnie! –

+1

Ostrzeżenie: jest to rozwiązanie dla pętli 'FOR/F' * file *, a nie dla pętli' FOR/F' * * zgodnie z pierwotnym pytaniem. Zobacz: ["ERRORLEVEL w FOR/F Command Loop zwraca nieoczekiwany wynik"] (http://stackoverflow.com/questions/38515054/errorlevel-in-for-f-command-loop-with-enabledelayedexpansion-returns-cunexpected) –

Powiązane problemy