विंडोज़ कमांड लाइन dir कमांड: केवल फ़ाइल नाम प्रदर्शित करने के लिए, 8.3 प्रारूप में?


11

मुझे पता है कि "dir / w" या "dir / b" केवल फ़ाइल नाम दिखाता है। जबकि "dir / x" या "dir / X" 8.3 प्रारूप दिखाता है, लेकिन साथ में लंबी प्रारूप फ़ाइल नाम, दिनांक और आकार जैसी अन्य सभी जानकारी दिखाता है।

क्या यह कॉल करना संभव है dir, जो केवल फ़ाइल नाम (दिनांक या आकार नहीं दिखा रहा है) दिखाता है, और 8.3 प्रारूप में दिखा रहा है?

जवाबों:


10
for /R %A in (*.*) do @echo %~nsA %~nA

उपनिर्देशिका के बिना:

for %A in (*.*) do @echo %~nsA %~nA

छिपी हुई फ़ाइलें जोड़ें:

for /F "tokens=*" %A in ('dir /B/A:-/S *') do @echo %~nsA %~nA

उपनिर्देशिका के बिना:

for /F "tokens=*" %A in ('dir /B/A:- *') do @echo %~nsA %~nA

आप उत्पादन कि साबित होता है यह है कि करता है शामिल कर सकते हैं
barlop

टेक्स्ट फ़ाइल में उस पहले कमांड के परिणामों को किक करने के लिए मुझे यह कैसे मिलेगा? मुझे निम्न त्रुटि मिलती है: "अनुरोधित ऑपरेशन को किसी फाइल पर यूजर-मैप्ड सेक्शन के साथ नहीं किया जा सकता है।"
bdb484

3

यदि आप केवल 8.3 नाम चाहते हैं और कुछ और प्रदर्शित नहीं होता है, यदि आप "dir / -n" का उपयोग करते हैं, तो आपको प्रत्येक पंक्ति की शुरुआत में 8.3 नाम मिलेगा। नोट: यह फ़ाइल नाम से एक अवधि के बजाय एक स्थान के साथ विस्तार को अलग करता है।

C:\Users\User>dir /-n
 Volume in drive C has no label.
 Volume Serial Number is 5C60-1B61

 Directory of C:\Users\User

.             <DIR>             01/28/2015  11:26 PM
..            <DIR>             01/28/2015  11:26 PM
Contacts      <DIR>             12/27/2014  04:46 PM
Desktop       <DIR>             01/25/2015  05:06 PM
DOCUME~1      <DIR>             01/27/2015  10:20 PM
DOWNLO~1      <DIR>             01/27/2015  10:10 PM
FAVORI~1      <DIR>             12/27/2014  04:46 PM
GOOGLE~1      <DIR>             01/28/2015  02:08 AM
Links         <DIR>             01/25/2015  05:06 PM
Music         <DIR>             12/27/2014  04:46 PM
Pictures      <DIR>             12/27/2014  04:46 PM
SAVEDG~1      <DIR>             12/27/2014  04:46 PM
Searches      <DIR>             12/27/2014  04:46 PM
TESTIN~1 TXT                  8 01/28/2015  10:32 PM
TESTIN~2 BAT                175 01/28/2015  11:26 PM
TESTIN~1 BAT                164 01/28/2015  11:26 PM
UNIGIN~1      <DIR>             10/28/2014  07:01 PM
Videos        <DIR>             12/27/2014  04:46 PM
               3 File(s)            347 bytes
              16 Dir(s)  3,896,034,717,696 bytes free

लेकिन आप बैच फ़ाइल में लूप के लिए "dir / -n" का उपयोग कर सकते हैं, फिर प्रत्येक पंक्ति के बाकी हिस्सों से छुटकारा पाने के लिए पहले 12 वर्णों का एक विकल्प निकालें । उदाहरण के लिए:

@echo off
setlocal EnableDelayedExpansion

for /f "skip=7 tokens=*" %%i in ('dir /-n ^| find /v "File(s)" ^| find /v "Dir(s)"') do (
   set x=%%i
   echo !x:~0,12!
)

"स्किप = 7" पहले 7 लाइनों को छोड़ देता है, जो न तो फ़ाइल का नाम है और न ही निर्देशिका नाम और "dir / -n" के आउटपुट को "dir / -n" द्वारा निर्मित अंतिम दो लाइनों को हटाने के लिए दो खोज आदेशों के माध्यम से पाइप किया जाता है। "(पाइप का प्रतीक" | " " ^ "से " बच "जाने की आवश्यकता है । चूँकि बैच फ़ाइल में एक लूप के लिए सबस्ट्रिंग एक्सट्रैक्शन होता है," सेट्लोकल इनेबलडेलएड एक्सपेंशन "की आवश्यकता होती है और"! "का उपयोग करने की आवश्यकता होती है। "%" के बजाय चर x। ऊपर के उदाहरण के लिए, आप तब बैच फ़ाइल को निष्पादित करने से निम्न आउटपुट देखेंगे:

C:\Users\User>testing456
Contacts
Desktop
DOCUME~1
DOWNLO~1
FAVORI~1
GOOGLE~1
Links
Music
Pictures
SAVEDG~1
Searches
TESTIN~1 TXT
TESTIN~2 BAT
TESTIN~1 BAT
UNIGIN~1
Videos

नाइटपिक: एक या अधिक रिक्त स्थान। abc.txtयह देखने के लिए एक फ़ाइल बनाने का प्रयास करें, जो क्रिया में है। फिर, इसके मज़े के लिए, नाम की एक फ़ाइल बनाएं abc.docx
एक CVn

0

एक घंटे तक इसके साथ खेलने के बाद मैं निम्नलिखित के साथ आया:

डॉस प्रॉम्प्ट से:

for /F "tokens=*" %A in ('dir /B/A:-/S c:\Windows') do (@echo %~sA>> "%temp%\file_list_8dot3.txt")

.BAT या .CMD फ़ाइल से:

for /F "tokens=*" %%A in ('dir /B/A:-/S c:\Windows') do (@echo %%~sA>> "%temp%\file_list_8dot3.txt")

नोट: इस स्क्रिप्ट में अभी भी लंबे फ़ाइल नामों के साथ समस्या है, लेकिन यह जारी रहेगा और एक 8dot3 पाठ फ़ाइल बनाएगा जिसे तब किसी अन्य बैच फ़ाइल में पंप किया जा सकता है।

मेरी पूरी परीक्षा निम्नलिखित है।

@echo off
cls

set ll=%temp%\file_list_8dot3.txt

if exist "%ll%" del "%ll%"
for /F "tokens=*" %%A in ('dir /B/A:-/S %temp%') do (@echo %%~sA>> "%ll%")

start /wait notepad "%ll%"

if exist "%ll%" del "%ll%"

0

सभी उप निर्देशिकाओं में फ़ाइलों को सूचीबद्ध करने के लिए इसे आज़माएं:

for /d /r %i in (*.*) do dir "%i" /B > %i/test.txt

 

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