विंडोजबैच में अल्पविराम से अलग स्ट्रिंग के माध्यम से कैसे लूप करें?
पोस्ट (dos batch iterate through a delimited string) के आधार पर, मैंने नीचे एक स्क्रिप्ट लिखी लेकिन उम्मीद के अनुसार काम नहीं किया।
लक्ष्य: दिए गए स्ट्रिंग "सन, ग्रेनाइट, ट्वाइलाइट", मैं प्रत्येक विषय मूल्य लूप में प्राप्त करना चाहता हूं ताकि मैं मूल्य के साथ कुछ प्रसंस्करण कर सकूं।
वर्तमान उत्पादन corrct नहीं है:
list = "Sun,Granite,Twilight"
file name is "Sun Granite Twilight"
पहले यात्रा के लिए यह होना चाहिए:।
list = "Sun,Granite,Twilight"
file name is "Sun"
तो दूसरी यात्रा होना चाहिए ग्रेनाइट "" फ़ाइल का नाम है "और इतने पर क्या क्या मैं गलत कर रहा हूं?
कोड:
set themes=Sun,Granite,Twilight
call :parse "%themes%"
goto :end
:parse
setlocal
set list=%1
echo list = %list%
for /F "delims=," %%f in ("%list%") do (
rem if the item exist
if not "%%f" == "" call :getLineNumber %%f
rem if next item exist
if not "%%g" == "" call :parse "%%g"
)
endlocal
:getLineNumber
setlocal
echo file name is %1
set filename=%1
endlocal
:end
टिप के लिए धन्यवाद! क्या आप लाइन को समझा सकते हैं: सेट सूची =% ~ 1% ~ 1 का क्या अर्थ है? –
ओह आप पहले ही समझाया गया है :) –
बस मेरी समझ के लिए: है: एक "बिल्टिन" लेबल? चूंकि मुझे यह परिभाषित नहीं दिख रहा है। और subroutine में यह "वापसी" के रूप में कार्य करता है? अजीब नियंत्रण प्रवाह, हालांकि :) – Krischu