विंडोज़ बैच स्क्रिप्ट में पूर्ण पथ प्राप्त करने के लिए चर


9

मेरे पास सभी फाइलों को सूचीबद्ध करने के लिए स्क्रिप्ट का अनुसरण है, एक निर्देशिका से पुनरावृत्ति, एक .phtmlविस्तार होने ।

@echo off
setlocal
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @relpath"') do echo %%G >> listoffiles.txt
endlocal
exit

यह केवल फाइलों के सापेक्ष पथ को सूचीबद्ध करता है। उपरोक्त स्क्रिप्ट एक मध्यवर्ती स्थान से चल रही है, इसलिए मुझे @relpathचर में पूर्ण पथ नहीं मिल रहा है ।

इसके अलावा मुझे परिणाम लाइनों में उद्धरण मिल रहे हैं, जिन्हें मैं हटाना चाहता हूं।

मैं उन फ़ाइलों के लिए कुछ कोड परिवर्तन के साथ पूर्ण पथ प्राप्त करना चाहता हूं, यदि कोई वैश्विक-चर उपलब्ध है जो मेरे कोड में उपयोग किया जा सकता है तो यह मेरे लिए सबसे अच्छा है, क्योंकि मैं विंडोज बैच ट्रिक का ज्यादा हिस्सा नहीं हूं।

जवाबों:


3

मुझे @relpathचर में पूर्ण पथ नहीं मिल रहे हैं ।

इसके अलावा मुझे परिणाम लाइनों में उद्धरण मिल रहे हैं, जिन्हें मैं हटाना चाहता हूं।

निम्न बैच फ़ाइल आप क्या चाहते हैं:

@echo off
setlocal enableDelayedExpansion
for /f %%G in ('forfiles /s /m *.phtml /c "cmd /c echo @path"') do (
  set _name=%%G
  rem strip the quotes
  echo !_name:~1,-1! >> listoffiles.txt
  )
endlocal
exit

टिप्पणियाँ:

  • का उपयोग करता है @path(फ़ाइल का पूर्ण पथ) के बजाय @relpath(फ़ाइल का सापेक्ष पथ)।
  • substringउद्धरण को हटाने के लिए एक चर अभिव्यक्ति का उपयोग करता है ( :~1,-1चर स्ट्रिंग से पहले और अंतिम वर्णों को निकालता है)।
  • उपयोग करता है setlocal EnableDelayedExpansionताकि चर forलूप में सही ढंग से अपडेट हो ।

आगे की पढाई

  • विंडोज सीएमडी कमांड लाइन का एक ऐज़ इंडेक्स - संबंधित सभी चीज़ों के लिए एक उत्कृष्ट संदर्भ विंडोज सीएमडी लाइन।
  • enableelayedexpansion - विलंबित विस्तार के कारण चर समय के बजाय निष्पादन समय में विस्तारित होने का कारण बनेंगे
  • for / f - दूसरी कमांड के परिणामों के खिलाफ लूप कमांड।
  • forfiles - एक फ़ाइल (या फ़ाइलों का सेट) का चयन करें और प्रत्येक फ़ाइल पर एक कमांड निष्पादित करें। बैच प्रसंस्करण।
  • चर - चर का एक हिस्सा निकालें (विकल्प)।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.