मैं .bat
फ़ाइल के भीतर से फ़ाइल की मूल निर्देशिका प्राप्त करना चाहता हूं। इसलिए, एक चर सेट को "C:\MyDir\MyFile.txt"
पर दिया गया है, मैं "C:\MyDir"
प्राप्त करना चाहता हूं। दूसरे शब्दों में, एक विशिष्ट यूनिक्स पर्यावरण में dirname()
कार्यक्षमता के बराबर। क्या यह संभव है?मैं बैच फ़ाइल में dirname() के बराबर कैसे प्राप्त करूं?
उत्तर
for %%F in (%filename%) do set dirname=%%~dpF
यह ड्राइव और %filename%
में संग्रहीत फ़ाइल नाम की सूची को %dirname%
सेट हो जाएगा।
रिक्त स्थान वाले फ़ाइल नामों के साथ सावधान रहें, हालांकि। या तो वे आसपास के उद्धरण के साथ सेट करने की आवश्यकता:
set filename="C:\MyDir\MyFile with space.txt"
या आप for
पाश में तर्क के आसपास उद्धरण डाल करने के लिए है:
for %%F in ("%filename%") do set dirname=%%~dpF
या तो विधि काम करेगी एक ही समय में दोनों जीता, 'टी :-)
जो भी कारण आप के लिए (कोई कमान एक्सटेंशन आदि) का उपयोग नहीं कर सकते हैं के लिए आप के साथ दूर होने के लिए सक्षम हो, तो हो सकता है .. \ हैक:
set file=c:\dir\file.txt
set dir=%file%\..\
लूप के साथ समस्या यह है कि यह स्ट्रिंग के अंत में पीछे की ओर छोड़ देता है। यदि आप कई बार डायरनाम प्राप्त करना चाहते हैं तो इससे समस्याएं पैदा होती हैं। शायद आपको उस निर्देशिका का नाम प्राप्त करने की आवश्यकता है जो निर्देशिका के दादा-दादी है, जिसमें केवल मूल निर्देशिका की बजाय फ़ाइल है। बस लूप तकनीक का उपयोग करने के लिए दूसरी बार \ को हटा देगा, और दादाजी निर्देशिका नहीं मिलेगी।
यह है कि आप बस निम्न कार्य नहीं कर सकते हैं। , नहीं "c: \ 1 \ 2":
set filename=c:\1\2\3\t.txt
for %%F in ("%filename%") do set dirname=%%~dpF
for %%F in ("%dirname%") do set dirname=%%~dpF
यह dirname के लिए "\ 1 \ 2 \ 3 ग" सेट हो जाएगा।
निम्न कार्य पीछे की ओर खींचकर समस्या को हल करता है \।
:dirname file varName
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET _dir=%~dp1
SET _dir=%_dir:~0,-1%
endlocal & set %2=%_dir%
GOTO :EOF
इसे निम्नानुसार कहा जाता है।
set filename=c:\1\2\3\t.txt
call :dirname "%filename%" _dirname
call :dirname "%_dirname%" _dirname
पिछली \ समस्या के लिए अच्छा समाधान। अन्यथा कोई भी '% dirname%' 'का उपयोग नहीं कर सकता है क्योंकि अंतिम उद्धरण पिछले स्लैश से बच जाएगा। ऐसे मामले में '"% dirname% \ "' काम करता है। लेकिन उनमें से केवल एक ही समय में। – Vertigo
- 1. बैच फ़ाइल CURRENTDIR = "$ PWD" के बराबर है?
- 2. पावरहेल में बैच स्क्रिप्ट को कॉल करते समय मैं बराबर चिह्न कैसे पास करूं?
- 3. बैच फ़ाइल के बाद चल रही बैच फ़ाइल बैच फ़ाइल
- 4. विंडोज बैच फ़ाइल PHP फ़ाइल
- 5. कैसे एक बैच फ़ाइल
- 6. मैं सी # में सामान्य फ़ाइल प्रकार आइकन कैसे प्राप्त करूं?
- 7. मैं Django में बैच डालने का प्रदर्शन कैसे करूं?
- 8. मैं फॉपेन फ़ाइल संरचना से फ़ाइल हैंडल कैसे प्राप्त करूं?
- 9. मैं सी # में फ़ाइल से संशोधित दिनांक कैसे प्राप्त करूं?
- 10. मैं VB.net में अस्थिर के बराबर कैसे निर्दिष्ट करूं?
- 11. मैं C# या बैच फ़ाइल
- 12. बैच फ़ाइल
- 13. में खिड़कियों बैच फ़ाइल
- 14. बैच फ़ाइल
- 15. कैसे एक बैच फ़ाइल फ़ाइल नामों में रिक्तियां को संभालने के लिए प्राप्त करने के लिए?
- 16. बैच फ़ाइल
- 17. मैं PHP में स्ट्रिंग के बाइट मान कैसे प्राप्त करूं?
- 18. बैच फ़ाइल
- 19. बैच फ़ाइल
- 20. बैच फ़ाइल
- 21. मैं हास्केल में कॉलस्टैक कैसे प्राप्त करूं?
- 22. बैच फ़ाइल
- 23. मैं ग्रहण में स्केलेटेस्ट कैसे प्राप्त करूं?
- 24. बैच फ़ाइल
- 25. बैच फ़ाइल
- 26. मैं जावा में HTTP कैसे प्राप्त करूं?
- 27. मैं सी # में% LocalAppData% कैसे प्राप्त करूं?
- 28. बैच फ़ाइल
- 29. बैच फ़ाइल
- 30. बैच फ़ाइल:
मैंने रिक्त स्थान के साथ फ़ाइल नामों के बारे में एक टिप्पणी जोड़ा; उन लोगों के साथ परीक्षण करना भूल गए। – Joey