2015-11-16 7 views
5

रिक्त स्थान के साथ तारों का उपयोग करने के लिए डबल कोट्स का उपयोग करते समय तर्क के साथ मल्टीलाइन कमांड दर्ज करने के लिए^प्रतीक का उपयोग करते समय^प्रतीक भी पारित किया गया है, क्या कोई इस तरह से समझा सकता है?डबल कोट्स के साथ बैच फ़ाइल मल्टीलाइन कमांड

@echo off 
call openfiles.cmd^
C:\dir\filename.txt^
C:\another_dir\another_file.txt 

working.cmd notworking.cmd

@echo off 
call openfiles.cmd^
"C:\dir with spaces\file with spaces.txt"^
"C:\another dir with spaces\another file with spaces.txt" 

openfiles.cmd लगता है कि

@echo off 
for %%x in (%*) do (

    IF EXIST %%x (
     call "c:\Program Files\Notepad++\notepad++.exe" %%x 
    ) ELSE (
     call echo Not found %%x 
    ) 

) 

pause 

त्रुटि मैं

C:\>call openfiles.cmd "C:\dir with spaces\file with spaces.txt"^
ELSE was unexpected at this time. 
की तरह लग रहे
+0

उदाहरण में कोशिश कर के लिए सोचता है कि इसके बाद के संस्करण मैं सामने अतिरिक्त रिक्त स्थान है दोहरे उद्धरणों में से मूल ने मेरी समस्या को ठीक नहीं किया – Mazaka

+0

यह विफल रहता है, क्योंकि उद्धरण बच निकले हैं और वहां रिक्त स्थान फिलेना को विभाजित कर सकते हैं छोटे भागों में mes – jeb

+0

"डबल" मेरा नया पसंदीदा शब्द है। –

उत्तर

5

कैरट नियम:

एक कैरट, अगले वर्ण निकल जाता है तो यह है कि चरित्र सब खो देता है विशेष प्रभाव।
यदि अगला चरित्र एक लाइनफीड ड्रॉप करता है और अगला चरित्र लेता है (यहां तक ​​कि जब यह एक लाइनफीड भी होता है)।

इस सरल नियम आप की तरह

echo #1 Cat^&Dog 
echo #2 Cat^ 
&Dog 
echo #3 Redirect to > Cat^ 
Dog 

setlocal EnableDelayedExpansion 
set linefeed=^ 


echo #4 line1!linefeed!line2 

#3 चीजों की व्याख्या कर सकते के साथ नामित किया गया "बिल्ली डॉग" के रूप में अंतरिक्ष से बच गया था और अब और परिसीमक के रूप में काम नहीं करता है एक फ़ाइल बनाता है।

लेकिन अभी भी इस नियम को तोड़ना संभव है!
आपको केवल देखभाल के सामने किसी भी पुनर्निर्देशन को रखने की आवश्यकता है, यह अभी भी लाइनफीड (मल्टीलाइन अभी भी काम करता है) छोड़ देता है, लेकिन अगला चरित्र अब से बच नहीं गया है।

echo #5 Line1< nul^
& echo Line2 

तो आप भी इस इस्तेमाल कर सकते हैं अपने बहु आदेश का निर्माण करने के

call openfiles.cmd < nul^
"C:\dir with spaces\file with spaces.txt" < nul^
"C:\another dir with spaces\another file with spaces.txt" 

या का उपयोग कर एक मैक्रो

set "\n=< nul ^" 
call openfiles.cmd %\n% 
"C:\dir with spaces\file with spaces.txt" %\n% 
"C:\another dir with spaces\another file with spaces.txt" 
1

कुछ भिन्न चीजों को आजमाने के बाद मैं इसे डबल कोट्स के सामने केवल एक अतिरिक्त स्थान के साथ काम करने में कामयाब रहा। निम्न के notworking.cmd परिवर्तन दोहरे उद्धरण चिह्नों के सामने काम किया

@echo off 
call openfiles.cmd^
"C:\dir with spaces\file with spaces.txt"^
"C:\another dir with spaces\another file with spaces.txt" 

टिप्पणी रिक्त स्थान

+0

नोटपैड ++ कहता है कि मेरी लाइन समाप्ति सीआर-एलएफ है जब मैं देखता हूं-> प्रतीकों-> सभी charaters दिखाएं, फिर भी यह सुनिश्चित नहीं है कि रिक्त स्थान ने मुझे – Mazaka

+0

क्यों मदद की, ओह, वास्तव में, मैं पुन: पेश कर सकता हूं। बात यह है कि मैंने कभी भी इंडेंट किए बिना निरंतरता लाइनों का उपयोग करने के बारे में सोचा नहीं है (आमतौर पर एक टैब के साथ) ... – wOxxOm

+0

आपकी फ़ीड के लिए धन्यवाद, यह मेरी समस्या का समाधान करता है। – Mazaka

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