एक .bat फ़ाइल में दो प्रतिशत के साथ एक चर को प्रतिस्थापित करना


2

मुझे एक .bat फ़ाइल को लागू करने की कोशिश करने में समस्या का सामना करना पड़ा और मुझे कोई उत्तर नहीं मिला। मैं सिस्टम पथ के बिना सभी फ़ोल्डर नामों को प्रदर्शित करने का प्रयास करता हूं।

मैंने ऐसा कुछ करने की कोशिश की है, लेकिन यह काम नहीं करता है।

@echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
    cd %%I 2>&1 >nul
    echo %%~nxI:~10,5
)
cd %back% 2>&1 >nul

क्या आपके पास समाधान है? :-)

जवाबों:


1

सबस्ट्रिंग केवल सामान्य चर के साथ काम करते हैं, मेटा चर के लिए नहीं।
किसी संस्करण में सामग्री की प्रतिलिपि बनाएँ और जैसा कि यह (कोड ब्लॉक) के अंदर है, आपको
छद्म कॉल विधि का उपयोग करके विलंबित विस्तार की आवश्यकता है :

:: Q:\Test\2018\07\26\SU_1345000.cmd
@echo off
PushD .
for /d %%I in (A:\test\test*) do (
    Set "Dir=%%I"
    Call echo %%Dir:~10,5%%
)
PopD

इस तरह एक पेड़ में:

> tree 
└───test
    ├───test1
    ├───test2
    └───test3

वह लौटता है

> Q:\Test\2018\07\26\SU_1345000.cmd
st1
st2
st3

संभवतः आपकी ऑफसेट सही नहीं थी।


0

आप उपयोग कर सकते हैं dir /ad /b C:\test\test*

@echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
    dir /ad /b %%I
)
cd %back% 2>&1 >nul

यह स्क्रिप्ट फ़ोल्डर्स में सभी फ़ोल्डर नामों को प्रिंट करेगी C:\test\test*


0

आपके उत्तर के लिए धन्यवाद। यहाँ एक समाधान है कि मेरे लिए काम किया है:

@echo off

setlocal EnableDelayedExpansion

for /d %%I in (C:\test\testV*) do (     
    set current_folder=%%I
    set test_version=!current_folder:~12,6!
    set test_version=!test_version:_=.!

    echo !current_folder!
    echo !test_version!
)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.