डॉस में फ़ाइल के विस्तार के बिना पहले कुछ वर्ण प्राप्त करें


3

मेरी फाइलें AAAAAAA-01.pdf, BBBBBB-02.pdf, CCCCCCC-03.pdf हैं, मैं नीचे दिए गए एक्सटेंशन के बिना फ़ोल्डर में फ़ाइल नाम की एक एक्सेल सूची उत्पन्न करने में सक्षम था:

for %%i in (*.pdf) do @echo %%~ni >> C:\LIST.xls

मेरे पास फ़ाइल के पहले 7 अक्षर कैसे हैं? मैं बाहर सिर्फ AAAAAA, BBBBBBB, CCCCCCC, की सूची रखना चाहता हूँ ...

मेरा दूसरा सवाल है: मुझे DASH से पहले केवल उन पात्रों को कैसे प्राप्त करना चाहिए -? उदाहरण के लिए मेरी फाइलें ABCD-01.pdf, A-03.pdf, AB-00.pdf, ... मैं चाहती हूं कि आउटपुट ABCD, A, AB, ...

मुझे यह मिल गया, set first7=%%I:~0,7%लेकिन यह नहीं पता कि इसे कैसे काम करना है।

आपकी सहायता के लिये पहले से ही धन्यवाद


आप हमेशा पूरे नाम को एक्सेल में आयात कर सकते हैं और फिर एक्सेल फ़ार्मुलों का उपयोग करके डेटा परिवर्तित कर सकते हैं। वह लगभग हमेशा ही मेरा शिकार है। उदाहरण: अपनी सूची को कॉलम A पर आयात करें, कॉलम B को कुछ इस तरह =LEFT(A1,7)बनाएं और उसे कॉलम के नीचे कॉपी करें, फिर कॉलम A
Tyson

मैं इसे BATCH FILE में चला रहा हूं और इसे दिन में कई बार चलाने के लिए शेड्यूल करता हूं। मेरे पास इस आउटपुट सूची से अन्य एक्सेल फ़ाइल पुल डेटा है जो vlookup का उपयोग कर रहे हैं। मैं आउटपुट लिस्ट नहीं खोलना चाहता और इसे हर बार 7 कैरेक्टर जेनरेट करता है।
चूनघियन

जवाबों:


1
@echo off
setlocal enabledelayedexpansion
if exist List.xls del List.xls
for %%a in (*.pdf) do (
    set fn=%%~na
    set fn=!fn:~0,7!
    for /f "tokens=1 delims=-" %%f in ('echo !fn!') do echo %%f>>List.xls
)

यह प्रत्येक फ़ाइल नाम के पहले 7 अक्षरों को प्रिंट करेगा। हालाँकि अगर कोई हाइफ़न मौजूद है तो वह आगे चलकर हाइफ़न से पहले केवल अक्षरों को छाँटेगा और प्रिंट करेगा।


); - उन्होंने कहा कि वे, मेरा उत्तर तुम्हारा तुलना में कम है प्रभावी रूप से एक एक लाइनर
DavidPostill

मेरे उत्तर का दूसरा भाग हाइफ़न से पहले केवल अक्षरों को प्रिंट करता है, हालांकि कई (एक for /fबयान में) हैं। आपको पहले 7 अक्षरों को निकालने की आवश्यकता नहीं है।
DavidPostill

Unhh ... क्या होगा यदि 8 वें अक्षर के बाद हाइफ़न मौजूद है? क्या आप 8 अक्षरों के साथ समाप्त नहीं होंगे? मेरी बैच फ़ाइल एक ही बार में उसकी दोनों आवश्यकताओं का ख्याल रखती है। उम्मीद है कि अब स्पष्ट है?
करण

ठीक। तुम जीत;) मैं असंबंधित भागों ... के दो प्रकार के रूप में उनकी (एक छोटे से अस्पष्ट) प्रश्न पढ़ा
DavidPostill

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

2

मेरे पास फ़ाइल के पहले 7 अक्षर कैसे हैं?

मैं बाहर सिर्फ AAAAAA, BBBBBBB, CCCCCCC, की सूची रखना चाहता हूँ ...

निम्न बैच फ़ाइल का उपयोग करें (फ़ाइल नाम के पहले 7 अक्षरों को निकालने के लिए)।

test.cmd:

@echo off
@Setlocal EnableDelayedExpansion
for %%i in (*.pdf) do (
  set _name=%%~ni
  echo !_name:~0,7!>> c:\list.xls
  )

उदाहरण आउटपुट:

C:\test>dir *.pdf
 Volume in drive C has no label.
 Volume Serial Number is C8D0-DF1E

 Directory of C:\test

19/06/2015  17:56                 0 AAAAAAA-01.pdf
19/06/2015  17:56                 0 BBBBBBB-02.pdf
19/06/2015  17:57                 0 CCCCCCC-03.pdf
               3 File(s)              0 bytes
               0 Dir(s)  92,871,524,352 bytes free

C:\test>test

C:\test>type c:\list.xls
AAAAAAA
BBBBBBB
CCCCCCC

C:\test>

मैं DASH से पहले केवल उन पात्रों को कैसे प्राप्त करूं?

उदाहरण के लिए मेरी फाइलें ABCD-01.pdf, A-03.pdf, AB-00.pdf, ... मैं चाहती हूं कि आउटपुट ABCD, A, AB, ...

निम्न बैच फ़ाइल का उपयोग करें (सभी अक्षरों को एक से पहले निकालने के लिए -)

test.cmd:

@echo off
for /f "usebackq tokens=1 delims=-" %%i in (`dir /b *.pdf`) do echo %%i>> c:\list.xls

उदाहरण आउटपुट:

C:\test>dir *.pdf
 Volume in drive C has no label.
 Volume Serial Number is C8D0-DF1E

 Directory of C:\test

19/06/2015  18:13                 0 A-03.pdf
19/06/2015  17:56                 0 AAAAAAA-01.pdf
19/06/2015  18:14                 0 AB-00.pdf
19/06/2015  18:13                 0 ABCD-01.pdf
19/06/2015  17:56                 0 BBBBBBB-02.pdf
19/06/2015  17:57                 0 CCCCCCC-03.pdf
               6 File(s)              0 bytes
               0 Dir(s)  92,870,991,872 bytes free

C:\test>test

C:\test>type c:\list.xls
A
AAAAAAA
AB
ABCD
BBBBBBB
CCCCCCC

C:\test>

आगे की पढाई


प्रश्न के दूसरे भाग का उत्तर देने के लिए अपडेट किया गया उत्तर।
DavidPostill

@Chaunghian अन्य उत्तर बेहतर है क्योंकि मेरे दो बैच फाइलें काम नहीं करती हैं: यदि: से पहले 7 से अधिक वर्ण हैं -:( एक;।)
DavidPostill

आपके उत्तर के दूसरे भाग ने प्रत्येक फ़ाइल नाम के अंत में एक स्थान बनाया है। इससे छुटकारा पाने का कोई उपाय?
चौघडि़या

अंतरिक्ष से पहले हटाने >>की तरहecho %%i>> c:\list.xls
DavidPostill

धन्यवाद डेविड, मैं .txt के रूप में सूची निर्यात करता हूं तब यह ठीक है। हालाँकि, इसे .xls में निर्यात करें तो इसके अंत में स्थान है। आपकी सहायता के लिए धन्यवाद।
चूनघियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.