2008-09-26 9 views
17

मैं का उपयोग कर प्रत्येक फ़ाइल पर पुनरावृत्ति कर रहा हूँ, तो:बैच खोजने फाइल एक्सटेंशन

@echo off 

FOR %%f IN (*\*.\**) DO (
    echo %%f 
) 

मैं प्रत्येक फ़ाइल के विस्तार कैसे प्रिंट कर सकता है? मैंने एक अस्थायी चर के लिए %% f असाइन करने का प्रयास किया, और फिर कोड का उपयोग करके: echo "%t:~-3%" प्रिंट करने के लिए लेकिन कोई सफलता नहीं मिली।

उत्तर

32

फॉर कमांड में कई अंतर्निहित स्विच हैं जो आपको फ़ाइल नामों को संशोधित करने की अनुमति देते हैं। निम्नलिखित का प्रयास करें:

@echo off 
for %%i in (*.*) do echo "%%~xi" 

अधिक जानकारी के लिए, help for का उपयोग संशोधक की एक पूरी सूची प्राप्त करने के लिए - वहाँ काफी कुछ कर रहे हैं!

5

यह काम करता है, हालांकि यह blindingly उपवास नहीं है:

@echo off 
for %%f in (*.*) do call :procfile %%f 
goto :eof 

:procfile 
    set fname=%1 
    set ename= 
:loop1 
    if "%fname%"=="" (
     set ename= 
     goto :exit1 
    ) 
    if not "%fname:~-1%"=="." (
     set ename=%fname:~-1%%ename% 
     set fname=%fname:~0,-1% 
     goto :loop1 
    ) 
:exit1 
    echo.%ename% 
    goto :eof 
2

Sam के जवाब निश्चित रूप से आप क्या चाहते हैं के लिए सबसे आसान है। लेकिन मैं जोड़ना चाहते थे:

एक for की () के अंदर एक चर नहीं set के बाद उसे तुरंत उपयोग करने के लिए, जब तक आप पहले से

setlocal ENABLEDELAYEDEXPANSION 

जारी किए गए हैं उम्मीद है और आप ! बजाय का उपयोग कर रहे परिवर्तनीय नाम लपेटने के लिए% का। उदाहरण के लिए,

@echo off 
setlocal ENABLEDELAYEDEXPANSION 

FOR %%f IN (*.*) DO (

    set t=%%f 
    echo !t:~-3! 

) 

चेक बाहर

set /? 
अधिक जानकारी के लिए

दूसरा विकल्प set, Pax शो जैसे सबराउटिन को कॉल करना है।

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