ব্যাচ ফাইলে ফর লুপে সংযুক্তকরণের স্ট্রিং


1

sfsview_monitor1.txtনিম্নলিখিত কন্টেন্ট সহ আমার একটি ফাইল রয়েছে:

Total pages: 16320
Pages used: 142
Pages free: 16178

আমি এই মত আউটপুট চাই:

16320 142 16178

নিম্নলিখিত কোড সহ আমি এটি করতে সক্ষম নই:

@echo on 
 SETLOCAL EnableDelayedExpansion

SET myvar=
for /f "tokens=1-3" %%P in ('type c:\shafique\sfsview_monitor1.txt ^| FINDSTR /B /I "Total Pages"') do (
    SET myvar=%myvar% %%R
 )
echo %myvar%

কেউ আমাকে সঠিক পথ নির্দেশ করতে পারবেন?

উত্তর:


4

আইএমও এটি অন্য জবাব হিসাবে যতটা জটিল হবে তা অগত্যা নয়।

যদি সেগুলি পাঠ্য ফাইলের একমাত্র লাইন হয় তবে আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

@echo off
set var=
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in (sfsview_monitor1.txt) do set var=!var!%%a
set var=!var:~1!
echo !var!
endlocal

যদি লাইনগুলি পাঠ্য ফাইলের এলোমেলো জায়গায় উপস্থিত থাকে তবে আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

@echo off
set var=
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in ('findstr /c:"Total pages" /c:"Pages used" /c:"Pages free" sfsview_monitor1.txt') do set var=!var!%%a
set var=!var:~1!
echo !var!
endlocal

এমনকি দ্বিতীয় সংস্করণটি আরও জেনেরিক হওয়ায় আপনার প্রথম সংস্করণটিরও প্রয়োজন নেই।


আপনি যদি ভেরিয়েবলের মধ্যে মানগুলি সংরক্ষণ করার বিষয়েও চিন্তা না করেন এবং আউটপুটটিতে কেবল আগ্রহী হন তবে নীচের একটি লাইনার ঠিক একইভাবে কাজ করবে:

@for /f "tokens=2 delims=:" %%a in (sfsview_monitor1.txt) do @echo | set /p var=%%a 

এবং

@for /f "tokens=2 delims=:" %%a in ('findstr /c:"Total pages" /c:"Pages used" /c:"Pages free" sfsview_monitor1.txt') do @echo | set /p var=%%a 

গুরুত্বপূর্ণ: এই দুটি লাইন সংস্করণে লাইনের শেষে একটি স্থান রয়েছে যা প্রয়োজনীয়! এছাড়াও, উপরে উল্লিখিত হিসাবে আপনি কেবল প্রথম সংস্করণটি উপেক্ষা করতে পারেন এবং দ্বিতীয়টি ব্যবহার করতে পারেন, যেহেতু পরেরটি দুটির বেশি জেনেরিক।


0

এটা চেষ্টা কর:

@echo off &setlocal
set "tf=%temp%%random%"
set "pt=Total pages"
set "pu=Pages used"
set "pf=Pages free"
(echo(%pt%&echo(%pu%&echo(%pf%)>"%tf%"

for /f "tokens=1,2delims=:" %%i in ('^<"sfsview_monitor1.txt" findstr /g:"%tf%"') do (
    if "%%i"=="%pt%" for /f %%a in ("%%j") do set "npt=%%a"
    if "%%i"=="%pu%" for /f %%a in ("%%j") do set "npu=%%a"
    if "%%i"=="%pf%" for /f %%a in ("%%j") do set "npf=%%a"
)
del "%tf%"
SET "myvar=%npt% %npu% %npf%"
echo(%myvar%

0

লুপটির %myvar%অভ্যন্তরের মান forসর্বদা এটির মান হবে লুপটি শুরুর আগে was আপনি যদি পরিবর্তিত পরিবর্তনশীল ব্যবহার করতে চান তবে !myvar!পরিবর্তে ব্যবহার করুন use

@echo on 
 SETLOCAL EnableDelayedExpansion

SET myvar=
for /f "tokens=1-3" %%P in ('type c:\shafique\sfsview_monitor1.txt ^| FINDSTR /B /I "Total Pages"') do (
    SET myvar=!myvar! %%R
 )
echo %myvar:~1%

এই আউটপুট হবে

16320 142 16178

%myvar:~1%সেখানে থাকা অংশটি প্রথম সংখ্যার শুরুতে লুপ জায়গাগুলির জন্য কেবল স্থানটি সরিয়ে দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.