आप बैच फ़ाइल से फ़ाइल (पाठ या बाइनरी) कैसे पढ़ सकते हैं? बाइनरी मोड या टेक्स्ट मोड में इसे पढ़ने का एक तरीका है?
TYPE [fileName]
MS-Dos के लिए कमांड का उपयोग कर सकते हैं ।
आप बैच फ़ाइल से फ़ाइल (पाठ या बाइनरी) कैसे पढ़ सकते हैं? बाइनरी मोड या टेक्स्ट मोड में इसे पढ़ने का एक तरीका है?
TYPE [fileName]
MS-Dos के लिए कमांड का उपयोग कर सकते हैं ।
जवाबों:
आप कमांड के लिए उपयोग कर सकते हैं:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
प्रकार
for /?
कमांड प्रॉम्प्ट पर। इसके अलावा, आप ini फ़ाइलों को पार्स कर सकते हैं !
for /?
कमांड के अनुसार myfile.txt में प्रत्येक लाइन को पार्स करेगा, सेमीकोलन से शुरू होने वाली लाइनों को अनदेखा करते हुए, बॉडी के लिए प्रत्येक लाइन से 2nd और 3rd टोकन पास करके, कॉमा और / या रिक्त स्थान द्वारा सीमांकित टोकन के साथ।
NT- शैली cmd.exe के तहत, आप एक पाठ फ़ाइल की पंक्तियों के माध्यम से लूप कर सकते हैं
FOR /F %i IN (file.txt) DO @echo %i
अधिक जानकारी के लिए कमांड प्रॉम्प्ट पर "हेल्प फॉर" टाइप करें। (यदि आप जो "डॉस" इस्तेमाल कर रहे हैं उसमें काम नहीं करता है)
%%i
।
फॉर-लूप आम तौर पर काम करता है, लेकिन कुछ मुद्दे हैं। के लिए खाली लाइनों को स्वीकार नहीं करता है और ~ 8190 से अधिक के साथ लाइनें समस्याग्रस्त हैं। यदि विलंबित विस्तार अक्षम है, तो विस्तार केवल विश्वसनीय कार्य करता है।
सीआर / एलएफ बनाम एकल एलएफ का पता लगाना भी थोड़ा जटिल लगता है।
इसके अलावा NUL अक्षर समस्याग्रस्त हैं, क्योंकि फॉर-लूप तुरंत पढ़ने को रद्द कर देता है।
प्रत्यक्ष बाइनरी पढ़ना इसलिए लगभग असंभव लगता है।
खाली लाइनों के साथ समस्या को एक चाल से हल किया जा सकता है। प्रत्येक पंक्ति को पंक्ति संख्या के साथ उपसर्ग करें, फिर से खोज आदेश का उपयोग करके, और पढ़ने के बाद, उपसर्ग को हटा दें।
@echo off
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
सक्षम और अक्षम विलंबित विस्तार के बीच टॉगलिंग स्ट्रिंग्स के साथ काम करने वाले, जैसे !
या के लिए सुरक्षित है ^^^xy!z
।
ऐसा इसलिए है क्योंकि लाइन set "var=%%a"
के साथ ही सुरक्षित है DisabledDelayedExpansion , और विस्मयादिबोधक चिह्न निकाल दिए जाते हैं और कैरेट (माध्यमिक) से बच पात्रों के रूप में उपयोग किया जाता है और वे भी निकाल दिए जाते हैं।
लेकिन चर var
का उपयोग केवल EnabledDelayedExpansion के साथ सुरक्षित है , क्योंकि यहां तक कि call %%var%%
जैसी सामग्री के साथ भी विफल हो जाएगा "&"&
।
संपादित करें: जोड़ा गया सेट / पी संस्करण
एक फ़ाइल को पढ़ने का दूसरा तरीका है set /p
, एकमात्र नुकसान यह है कि यह प्रति पंक्ति ~ 1024 वर्णों तक सीमित है और यह लाइन के अंत में नियंत्रण वर्ण हटाता है।
लेकिन लाभ यह है कि, आपको टॉगल करने में देरी की आवश्यकता नहीं है और चर में मूल्यों को संग्रहीत करना आसान है
@echo off
setlocal EnableDelayedExpansion
set "file=%~1"
for /f "delims=" %%n in ('find /c /v "" %file%') do set "len=%%n"
set "len=!len:*: =!"
<%file% (
for /l %%l in (1 1 !len!) do (
set "line="
set /p "line="
echo(!line!
)
)
हेक्स-प्रतिनिधित्व में इसे "बाइनरी" पढ़ने के लिए
आप एसओ को देख सकते हैं : बैच फ़ाइल का उपयोग करके बाइनरी फ़ाइल को हेक्स प्रतिनिधित्व में परिवर्तित करना
set /p
। मैंने set /p value=< result.txt
एक टेक्स्ट फ़ाइल से पहली पंक्ति प्राप्त की
0x1A
? for /F
NUL ( 0x00
) वर्णों के समान व्यवहार करता है ?
:
या ;
या शामिल!
इसे करने का एक बहुत ही आसान तरीका निम्नलिखित कमांड का उपयोग करना है:
set /p mytextfile=< %pathtotextfile%\textfile.txt
echo %mytextfile%
यह केवल पाठ फ़ाइल में पाठ की पहली पंक्ति प्रदर्शित करेगा। दूसरे तरीके से आप इसे कर सकते हैं निम्नलिखित कमांड का उपयोग करें:
type %pathtotextfile%\textfile.txt
यह सभी डेटा को पाठ फ़ाइल में स्क्रीन पर रखेगा। उम्मीद है की यह मदद करेगा!
वैसे तो बहुत सारे तरीके हैं, लेकिन अगर आप केवल पाठ को प्रदर्शित करना चाहते हैं और इसे कहीं भी स्टोर नहीं करना चाहते हैं तो आप इसका उपयोग करें: findstr /v "randomtextthatnoonewilluse" filename.txt
सही कोड:
setlocal enabledelayedexpansion
for /f "usebackq eol= tokens=* delims= " %%a in (`findstr /n ^^^^ "name with spaces.txt"`) do (
set line=%%a
set "line=!line:*:=!"
echo(!line!
)
endlocal
pause
eol=
और delims=
बहुत ही कम हैं, set line=%%a
उद्धरणों का उपयोग करना चाहिए और विलंबित विस्तार मोड को टॉगल किए बिना, कोड विस्मयादिबोधक चिह्न नहीं पढ़ सकता है