2016-06-23 5 views
7

मेरे पास एक बैच फ़ाइल है जो पिछले कुछ रनों तक काफी खुशी से काम कर रही थी, और अब यह नहीं है। अपमानजनक कोड इस प्रकार है: ': \ Program सी' एक आंतरिक या बाहरी कमांड, प्रचलित कार्यक्रम या बैच फ़ाइल के रूप में मान्यता प्राप्त नहीं है"forback" के साथ "forbackq" के साथ वापस उद्धरण

set uncommittedchanges=1 
for /f "tokens=* usebackq" %%a in (`"C:\Program Files\Git\cmd\git" -C "\my\git\repository" status`) do (
    if "%%a" == "nothing to commit, working directory clean" (
     set uncommittedchanges=0 
    ) 
) 

और त्रुटि मैं हो रही है

है।

मुझे यकीन है कि मैंने पिछले लाइनों के बाद से इन लाइनों में कोई बदलाव नहीं किया है, और मैं कोड के साथ कुछ भी गलत नहीं देख सकता।

क्या कोई भी गलत बता सकता है, या एक सेटिंग का सुझाव दे सकता है जिसे मैंने अनजाने में बदल दिया है जो usebackq को प्रभावित करता है?

+0

आपका नया cmd व्यवस्थापक मोड में है? – Mekap

+0

हां, मैंने cmd.exe को व्यवस्थापक के रूप में चलाया है। – BeanFrog

+2

मैं जवाब नहीं दे सकता कि आप रहस्यमय तरीके से टूटने के लिए काम क्यों कर रहे थे, लेकिन आप 8.3 लघु उपनामों का उपयोग कर समस्या के आसपास काम कर सकते हैं: '" सी: \ PROGRA ~ 1 \ गिट \ cmd \ git "-C" \ my \ गिट \ रिपोजिटरी "स्थिति' –

उत्तर

3

यह बच्चे cmd.exe उदाहरण का आह्वान करने की एक बग है।
आपको पहले से टोकन अनचाहे रिक्त स्थान का उपयोग करने से बचने के लिए एक वर्कअराउंड का उपयोग करने की आवश्यकता है।

सबसे आसान तरीका CALL का उपयोग करना है क्योंकि यह आपके प्रोग्राम-टोकन को दूसरे स्थान पर ले जाता है, और वहां यह बिना किसी समस्या के काम करता है।

for /f "tokens=* usebackq" %%a in (`CALL "C:\Program Files\Git\cmd\git" -C "\my\git\repository" status`) do (

Windows start command not able to execute batch file

संबंधित मुद्दे