কোনও পাঠ্য ফাইলের প্রথম লাইনটি "ফর"-লুপের শরীরে কাজ করছে না এমন পাঠের জন্য "সেট / পি" -methodthodthod ব্যাচ স্ক্রিপ্টে কেন ব্যবহৃত হয়?


4

আমি উত্তর দেওয়া প্রয়োগ করার চেষ্টা করে Spaceballs করতে এই প্রশ্নের একটি শরীরের মধ্যে for-loop

example.bat:

@echo off

copy NUL %1
echo firstLine >> %1

echo /=======================/
for /l %%x in (1,1,3) do (
  echo %%x
  set /p A=< %1
  echo %A%
)
echo /=======================/

set /p A=< %1
echo %A%

এর ফলাফল start example.bat temp.txt:

     1 file(s) copied.

/ ======================= /

1

ECHO বন্ধ আছে।

2

ECHO বন্ধ আছে।

3

ECHO বন্ধ আছে।

/ ======================= /

প্রথম লাইন

-লুপের set /p A=< %1শরীরে কাজ করছে না কেন for?

উত্তর:


3

মূল সমস্যাটি হ'ল লুপ ভেরিয়েবল ব্যতীত cmdলুপটি কার্যকর হওয়ার আগে একটি ব্যাচ ফাইল লুপের মধ্যে ভেরিয়েবল প্রসারিত হয়, সুতরাং Aলুপের মধ্যে সেট করা হলেও, মানটি প্রতিধ্বনিত হয় এটি লুপে প্রবেশের পূর্বে (যেমন ফাঁকা) । আপনি দেখতে পাচ্ছেন যে setফাইনালের আগে বাদ দিয়ে মানটি সেট করা হয়েছে echo: আউটপুট একই হবে।

উত্তরটি হ'ল বিলম্বিত প্রসারণ সক্ষম করুন এবং !A!পরিবর্তে ব্যবহার করুন %A%

যাইহোক copyএবং echoফাইলের শুরুতে কমান্ড লেখার একটি অকারণে দীর্ঘ পথ হয় echo firstLine > %1

সুতরাং আপনার ব্যাচের ফাইলটি প্রত্যাশা অনুযায়ী কাজ করবে যদি আপনি এটি নিম্নরূপে সংশোধন করেন: -

@echo off

SetLocal EnableDelayedExpansion

rem copy NUL %1
rem echo firstLine >> %1
echo firstLine > %1

echo /=======================/
for /l %%x in (1,1,3) do (
  echo %%x
  set /p A=< %1
  echo !A!
)
echo /=======================/

rem set /p A=< %1
echo %A%

নোট করুন যে আপনি Aলুপের প্রতিটি পাসে একই মান নির্ধারণ করবেন। আপনি যদি প্রতিটি পাস থেকে ফাইল থেকে ধারাবাহিক লাইন প্রদর্শন করতে চান তবে আপনাকে একটি আলাদা কৌশল ব্যবহার করতে হবে।

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