উইন্ডোজ ব্যাচের ফাইলটি ব্যবহার করে আমি কোনও পাঠ্য ফাইল থেকে প্রথম লাইনটি কীভাবে পড়তে পারি? ফাইলটি বড় হওয়ায় আমি কেবল প্রথম লাইনেই ডিল করতে চাই।
উইন্ডোজ ব্যাচের ফাইলটি ব্যবহার করে আমি কোনও পাঠ্য ফাইল থেকে প্রথম লাইনটি কীভাবে পড়তে পারি? ফাইলটি বড় হওয়ায় আমি কেবল প্রথম লাইনেই ডিল করতে চাই।
উত্তর:
n
GNU head
ইউটিলিটির মতো কোনও ফাইলের উপরের লাইনগুলি কেবল একটি একক লাইনের পরিবর্তে মুদ্রণের জন্য এখানে একটি সাধারণ-উদ্দেশ্য ব্যাচের ফাইল রয়েছে ।
@echo off
if [%1] == [] goto usage
if [%2] == [] goto usage
call :print_head %1 %2
goto :eof
REM
REM print_head
REM Prints the first non-blank %1 lines in the file %2.
REM
:print_head
setlocal EnableDelayedExpansion
set /a counter=0
for /f ^"usebackq^ eol^=^
^ delims^=^" %%a in (%2) do (
if "!counter!"=="%1" goto :eof
echo %%a
set /a counter+=1
)
goto :eof
:usage
echo Usage: head.bat COUNT FILENAME
উদাহরণ স্বরূপ:
Z:\>head 1 "test file.c"
; this is line 1
Z:\>head 3 "test file.c"
; this is line 1
this is line 2
line 3 right here
এটি বর্তমানে ফাঁকা রেখা গণনা করে না। এটি 8 কেবি ব্যাচ-ফাইলের লাইন-দৈর্ঘ্যের সীমাবদ্ধতার সাপেক্ষে।
;
, ফর / এফ ইওএল অক্ষর character যদি 10 টি লাইনের জন্য জিজ্ঞাসা করা হয়, তবে এটি প্রথম 10 টি লাইন মুদ্রণ করবে যা খালি নয় এবং শুরু হয় না ;
।
আহ? ইমো এটি অনেক সহজ
set /p texte=< file.txt
echo %texte%
echo %texte:~3%
উদাহরণস্বরূপ প্রথম তিনটি অক্ষর এড়ানো হবে। এটি কার্যকরভাবে যখন আপনি বিওএম সহ কোনও ইউটিএফ -8 ফাইল পড়ছেন।
ওহে ছেলেরা ...
C:\>findstr /n . c:\boot.ini | findstr ^1:
1:[boot loader]
C:\>findstr /n . c:\boot.ini | findstr ^3:
3:default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
C:\>
findstr "^1:"
এবং ডাবল কোটের উষ্ণতা এবং সুরক্ষা অর্জন করুন। অথবা, আপনি যদি আমার মতো উক্তিগুলি অবজ্ঞা করেন এবং বিপজ্জনকভাবে বাঁচতে চান, ব্যবহার করুনfindstr /b 1:
findstr ^^1
।
set /p
সমাধান অনেক বেশি বড় ফাইল জন্য কার্যকরী।
আপনি এটি ব্যবহার করে দেখতে পারেন:
@echo off
for /f %%a in (sample.txt) do (
echo %%a
exit /b
)
সম্পাদনা করুন বা বলুন যে আপনার কাছে চারটি ডেটা কলাম রয়েছে এবং 5 তম সারি থেকে নীচে পর্যন্ত চান, এটি চেষ্টা করুন:
@echo off
for /f "skip=4 tokens=1-4" %%a in (junkl.txt) do (
echo %%a %%b %%c %%d
)
"delims="
ফাঁকা জায়গাগুলির সাথে পুরো ফোল্ডারের নামগুলি মুদ্রণের জন্য আমাকে যুক্ত করতে হয়েছিল।
টেক্সটিং ফাইল থেকে প্রথম লাইনটি পড়ার জন্য উইন্ডোজ ব্যাচ কমান্ড (গুলি) জবাব সহ থ্যালকিংওয়ালটকে ধন্যবাদ আমি নিম্নলিখিত সমাধানটি নিয়ে এলাম:
@echo off
for /f "delims=" %%a in ('type sample.txt') do (
echo %%a
exit /b
)
সামান্যভাবে অন্য লোকদের জবাব উপর ভিত্তি করে। এখন আপনি যে ফাইলটি পড়তে চান এবং যে ভেরিয়েবলটি আপনি ফলাফলের মধ্যে রাখতে চান তা সুনির্দিষ্ট করার অনুমতি দেয়:
@echo off
for /f "delims=" %%x in (%2) do (
set %1=%%x
exit /b
)
এর অর্থ আপনি উপরেরটি এটির মতো ব্যবহার করতে পারেন (ধরে নিলেন আপনি এটি getline.bat বলেছিলেন)
c:\> dir > test-file
c:\> getline variable test-file
c:\> set variable
variable= Volume in drive C has no label.
একটি ফাইল cicle করার জন্য ( file1.txt
, file1[1].txt
, file1[2].txt
, ইত্যাদি):
START/WAIT C:\LAERCIO\DELPHI\CICLADOR\dprCiclador.exe C:\LAERCIUM\Ciclavel.txt
rem set/p ciclo=< C:\LAERCIUM\Ciclavel.txt:
set/p ciclo=< C:\LAERCIUM\Ciclavel.txt
rem echo %ciclo%:
echo %ciclo%
এবং এটি চলছে।
set /p
একটি প্রম্পটের মাধ্যমে জিজ্ঞাসা; তবে ফাইল পুনর্নির্দেশের সাথে সাথে <
সাথেই তাৎক্ষণিকভাবে ফাইলের বিষয়বস্তু পাওয়া যায়; এবং প্রথম লাইনটি শেষ হওয়ার সাথে সাথে একটি লাইনের সমাপ্তি হয়, সেই মুহূর্তে প্রম্পট পড়া বন্ধ করে দেয় এবং এভাবে ভেরিয়েবলের মধ্যে প্রথম লাইনটি সংরক্ষণ করে।
EXIT /B
সমাধানগুলির সাথে সমস্যাটি , যখন আরও ব্যাচ ফাইলের অভ্যন্তরে আরও বাস্তবের দিক থেকে এটির কেবল এক অংশ হিসাবে নিম্নলিখিত is এর পরে উল্লিখিত ব্যাচ ফাইলের মধ্যে পরবর্তী কোনও প্রক্রিয়াজাতকরণ নেই EXIT /B
। সাধারণত ব্যাচগুলিতে কেবলমাত্র এক, সীমিত কাজ ছাড়াও আরও অনেক কিছু থাকে।
এই সমস্যাটি মোকাবেলায়:
@echo off & setlocal enableextensions enabledelayedexpansion
set myfile_=C:\_D\TEST\My test file.txt
set FirstLine=
for /f "delims=" %%i in ('type "%myfile_%"') do (
if not defined FirstLine set FirstLine=%%i)
echo FirstLine=%FirstLine%
endlocal & goto :EOF
(তবে তথাকথিত বিষের চরিত্রগুলি এখনও সমস্যা হবে।)
ব্যাচের কমান্ডগুলির সাথে একটি নির্দিষ্ট লাইন পাওয়ার বিষয়ে আরও:
আমি কীভাবে কোনও পাঠ্য ফাইলের প্রথম ও শেষ লাইনটি পেতে পারি? " Http://www.netikka.net/tsneti/info/tscmd023.htm
[২৮-আগস্ট -২০১২ যোগ করেছেন] একজনের মধ্যে এটিও থাকতে পারে:
@echo off & setlocal enableextensions
set myfile_=C:\_D\TEST\My test file.txt
for /f "tokens=* delims=" %%a in (
'type "%myfile_%"') do (
set FirstLine=%%a& goto _ExitForLoop)
:_ExitForLoop
echo FirstLine=%FirstLine%
endlocal & goto :EOF
দ্রষ্টব্য, ব্যাচ ফাইলের পন্থাগুলি ডস কমান্ড প্রসেসরের লাইন সীমাতে সীমাবদ্ধ থাকবে - দেখুন কমান্ড লাইনের দৈর্ঘ্য সীমাটি কী? ।
সুতরাং যদি এমন কোনও ফাইলের প্রক্রিয়া করার চেষ্টা করা হয় যা 8192 টির বেশি অক্ষরের বেশি থাকে তবে স্ক্রিপ্টটি কেবল এটিকে এড়িয়ে যায় কারণ মানটি ধরে রাখা যায় না।
অন্য উপায়
setlocal enabledelayedexpansion
@echo off
for /f "delims=" %%i in (filename.txt) do (
if 1==1 (
set first_line=%%i
echo !first_line!
goto :eof
))
এখানে ব্যবহার করে একটি কার্যনির্বাহী powershell
:
powershell (Get-Content file.txt)[0]
(আপনি সহজেই এর সাথে বিভিন্ন লাইনের রেখাও পড়তে পারেন powershell (Get-Content file.txt)[0..3]
)
আপনার প্রথম লাইন হিসাবে ব্যাচ স্ক্রিপ্টের ভিতরে যদি কোনও ভেরিয়েবল সেট file.txt
করতে হয় তবে:
for /f "usebackq delims=" %%a in (`powershell ^(Get-Content file.txt^)[0]`) do (set "head=%%a")
for /f "delims=" %a in (downing.txt) do echo %a & pause>nul
1 ম লাইন মুদ্রণ করে, তারপরে পরবর্তী লাইনে মুদ্রণের জন্য ব্যবহারকারী কী টিপতে অপেক্ষা করে। প্রয়োজনীয় লাইনগুলি মুদ্রণের পরে, থামতে Ctrl + C টিপুন।
@ রোস প্রেসার: এই পদ্ধতিটি কেবল লাইনগুলি প্রিন্ট করে, লাইন সংখ্যাগুলি প্রিপেন্ড করে না।