2010-06-21 26 views
6

के लिए बैच द्वारा निष्पादित आदेश का त्रुटि स्तर निम्न कोड हमेशा त्रुटि के रूप में 0 प्रदर्शित करता है, लेकिन जब कॉपी कमांड लूप कमांड के बाहर किया जाता है तो यह एक शून्य त्रुटि त्रुटि देता है।लूप

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

लूप द्वारा निष्पादित प्रतिलिपि आदेश के त्रुटि को प्राप्त करना संभव है?

उत्तर

1

मुझे लगता है कि आप एक निर्देशिका से दूसरी निर्देशिका में फ़ाइलों की प्रतिलिपि बना रहे हैं? यदि हां, तो आप इस बजाय की तरह कुछ कर सकता है:

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

देरी विस्तार मान के बजाय पाश अंदर errorlevel के वास्तविक मूल्य प्राप्त करने के लिए इससे पहले कि पाश दर्ज किया गया है की आवश्यकता है।

यदि आप ऐसा करने की कोशिश नहीं कर रहे हैं, तो कृपया अपने उद्देश्य को स्पष्ट करें।

+0

मैं एक निष्पादन के लिए उत्पादन (कॉपी सिर्फ एक सरल उदाहरण है) पार्स करने के लिए कोशिश कर रहा हूँ चला सकते हैं, लेकिन मैं अगर है कि निष्पादन त्रुटि दी जानना चाहते हैं। – Josh

+0

ठीक है। मुझे यकीन नहीं है कि अगर आप मेरे उदाहरण में उन्हें अलग किए बिना लूप द्वारा निष्पादित आदेश के लिए त्रुटि-स्तर प्राप्त कर सकते हैं, तो शायद कोई और बेहतर उत्तर प्रदान कर सकता है। – WildCrustacean

4

यह मेरे लिए काम करता है! आपको केवल डीओ कोष्ठक में कॉपी कमांड वाली एक फ़ाइल फ़ाइल के साथ त्रुटि जांच करने की आवश्यकता है (7200 लाइनें; उदाहरण के लिए: कॉपी 2_97691_Scan.pdf ओ: \ डेटा \ देव \ Mins \ PDFScan2 \ 2011 \ 4 \ 2_97691_Scan। पीडीएफ), मैं निम्नलिखित बैच फ़ाइल

@echo off 

setlocal EnableDelayedExpansion 

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

यहां महत्वपूर्ण बात यह है कि 'EnableDelayedExpansion' –

+0

धन्यवाद - यह मेरे लिए काम करता है! –

+1

चेतावनी: यह मूल प्रश्न के अनुसार 'FOR/F' * फ़ाइल * लूप के लिए एक समाधान है, 'FOR/F' * कमांड * लूप नहीं है। कृपया देखें: ["फॉर/एफ कमांड लूप में अनियंत्रित परिणाम अप्रत्याशित परिणाम"] (http://stackoverflow.com/questions/38515054/errorlevel-in-for-f-command-loop-with-enabledelayedexpansion-returns-unexpected) –