আপনি কিভাবে একটি ব্যাচ ফাইল থেকে একটি ফাইল (পাঠ্য বা বাইনারি) পড়তে পারেন? এটি বাইনারি মোডে বা পাঠ্য মোডে পড়ার উপায় আছে?
TYPE [fileName]
এমএস-ডসের জন্য কমান্ডটি ব্যবহার করতে পারেন ।
আপনি কিভাবে একটি ব্যাচ ফাইল থেকে একটি ফাইল (পাঠ্য বা বাইনারি) পড়তে পারেন? এটি বাইনারি মোডে বা পাঠ্য মোডে পড়ার উপায় আছে?
TYPE [fileName]
এমএস-ডসের জন্য কমান্ডটি ব্যবহার করতে পারেন ।
উত্তর:
আপনি ফর কমান্ডটি ব্যবহার করতে পারেন:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
প্রকার
for /?
কমান্ড প্রম্পটে। এছাড়াও, আপনি ini ফাইলগুলি পার্স করতে পারেন !
for /?
কমান্ড myfile.txt প্রতিটি লাইন পার্স হবে, লাইন করে একটি সেমিকোলন দিয়ে শুরু উপেক্ষা শরীরের জন্য প্রতিটি লাইন থেকে 2nd এবং 3rd টোকেন ক্ষণস্থায়ী, কমা এবং / অথবা শূণ্যস্থান দ্বারা সীমায়িত টোকেন সঙ্গে।
এনটি-স্টাইলের cmd.exe এর অধীনে আপনি একটি পাঠ্য ফাইলের লাইন দিয়ে লুপ করতে পারেন
FOR /F %i IN (file.txt) DO @echo %i
আরও তথ্যের জন্য কমান্ড প্রম্পটে "সহায়তা জন্য" টাইপ করুন। (আপনি যে "ডস" ব্যবহার করছেন তাতে এটি কাজ করে কিনা তা জানেন না)
%%i
।
ফোর-লুপটি সাধারণত কাজ করে তবে কিছু সমস্যা আছে। FOR 8190 ডলারের বেশি খালি লাইনগুলি এবং লাইনগুলি সমস্যাযুক্ত accept বিলম্ব প্রসারণ অক্ষম করা থাকলে প্রসারণ কেবল নির্ভরযোগ্যভাবে কাজ করে।
সিআর / এলএফ বনাম একক এলএফ সনাক্তকরণও কিছুটা জটিল বলে মনে হচ্ছে।
এছাড়াও এনওএল অক্ষরগুলি সমস্যাযুক্ত কারণ একটি ফর-লুপ তাত্ক্ষণিকভাবে পড়াটি বাতিল করে দেয়।
সরাসরি বাইনারি পড়া প্রায় অসম্ভব বলে মনে হচ্ছে।
খালি লাইনগুলির সমস্যাটি একটি কৌশল দ্বারা সমাধান করা যেতে পারে। প্রতিটি লাইনের সন্ধানকারী কমান্ডটি ব্যবহার করে একটি রেখা সংখ্যার সাথে উপসর্গ করুন এবং পড়ার পরে উপসর্গটি সরিয়ে ফেলুন।
@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
)
সক্ষম করতে হবে এবং প্রতিবন্ধী বিলম্বিত সম্প্রসারণ মধ্যে টগল করা neccessary হয় স্ট্রিং মত সঙ্গে নিরাপদ কাজের জন্য !
বা ^^^xy!z
।
এটা এ কারণে যে লাইন set "var=%%a"
একমাত্র নিরাপদ DisabledDelayedExpansion অন্য বিস্ময়বোধক চিহ্ন সরিয়ে ফেলা হয় এবং ক্যারেট (সেকেন্ডারি) পালাবার অক্ষর হিসাবে ব্যবহার করা হয় এবং তারা খুব সরিয়ে ফেলা হয়।
তবে ভেরিয়েবলটি ব্যবহার var
করা কেবলমাত্র এনএবেডডিলিয়েডএক্স্পেনশন সহ নিরাপদ , কারণ এর call %%var%%
মতো সামগ্রীতে একটি ব্যর্থও হবে "&"&
।
সম্পাদনা: সংযুক্ত সেট / পি বৈকল্পিকের
সাথে ফাইল পড়ার দ্বিতীয় উপায় রয়েছে set /p
, কেবলমাত্র অসুবিধাগুলি হ'ল এটি প্রতি লাইনে per 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
ব্যবহারিক হওয়া উচিত , উদ্ধৃতি ব্যবহার করা উচিত এবং বিলম্বিত প্রসারণ মোড টগল না করে কোডটি