मैं एक विंडोज बैच कमांड फ़ाइल डीबग कर रहा हूँ। यह विफल हो रहा है जब विस्तारित (> 0x7f) वर्ण पथ या फ़ाइल नामों में उपयोग किए जाते हैं। समस्या एक कमांड फ़ाइल में गुजरने वाले पैरामीटर से संबंधित प्रतीत होती है जिसे दूसरे से कॉल किया जाता है।विंडोज आदेशों में विस्तारित वर्णों को संभालना?
एक उदाहरण के लिए, इस आदेश का काम करता है के रूप में उम्मीद:
xcopy "Pezuñero\1 - 001.wav" \temp
यह नहीं करता है:
call another.cmd "Pezuñero"
"another.cmd" की सामग्री:
xcopy "%~1\1 - 001.wav" \temp
% ~ 1 वाक्यविन्यास एक पैरामीटर फैलाता है और उद्धरण हटा देता है। यह आवश्यक है क्योंकि असली कमांड फ़ाइल में, कॉलिंग या कॉल कमांड फ़ाइल में पथ रिक्त स्थान हो सकते हैं।
C:\>call another.cmd "Pezu±ero"
C:\>xcopy "Pezu±ero\1 - 001.wav" \temp
File not found - 1 - 001.wav
0 File(s) copied
ध्यान दें कि "एन" (0xF1) चरित्र एक "±" (0xB1) को बदल दिया गया है:
दूसरे उदाहरण (सीएमडी खिड़की से नकल) का परिणाम यह है।
क्या कोई यह बता सकता है कि क्या हो रहा है, और इसके आसपास कैसे काम करना है?
आप अपनी स्क्रिप्ट पर लिखने से पहले स्ट्रिंग को कन्वर्ट करने के लिए CharToOem का भी उपयोग कर सकते हैं: http://msdn.microsoft.com/en-us/library/ms647473.aspx –