- উইন্ডোজ সার্ভার 2012 cmd.exe বাক্স
- আমার
get.bat
তালিকাভুক্ত সমস্ত ডিরেক্টরি প্রক্রিয়া করার জন্য একটি ব্যাচ ফাইল তৈরি করতে হবে, কল করতে হবে ,dlist.txt
একই ডাইরে রয়েছেget.bat
। ডিরেক্টরি নাম dlist.txt এ প্রতি লাইন এক। dlist.txt দিয়ে তৈরি হয়েছিলdir /b DIV_* > dlist.txt
। এই ডিআইভি_এল ফাইলগুলি আমার ব্যাচের ফাইলটি চালিত সেই দুরের প্রকৃত উপ-ডিরেক্টরি। - আমি ফর কমান্ডে কোনও ফাইলস্পেক ব্যবহার করতে পারি না কারণ
dlist.txt
এটি তৈরির পরে আমার হাতে সম্পাদনা করা দরকার । আমি সমস্ত ডায়ারের মতোDIV_*
কিছু প্রক্রিয়া করতে চাই না just - তৈরি করা হচ্ছে
dlist.txt
সঙ্গেdir /w DIV_* > dlist.txt
উপায়ে সব ডিরেক্টরির নাম [] তাদের চারপাশে এবং আমি যে ব্যবহার করতে পারবেন না। - কমান্ডটি
get.bat
তৈরি করে সমস্ত ফলাফল ধারণ করার জন্য একটি ফাইল প্যারামিটারে একটি প্যারামিটার রয়েছেfromxsf
। .Txt এক্সটেনশনটি ব্যাচের ফাইল দ্বারা যুক্ত করা হবে। - আমার প্রতিটি ডিয়ারে একাধিক কমান্ড করা দরকার
dlist.txt
, এর মধ্যে কয়েকটি ব্যবহার করে% টেম্পাউটফায়াল% নামক একটি টেম্প ফাইল ফাইল সেট করেfromxsf
। - গুগলে আমি বেশ কয়েকটি পৃষ্ঠাগুলি পড়েছি যার মধ্যে সুপারউসার থেকে কিছু রয়েছে তবে উদাহরণগুলি যেগুলি সেমিডি.এক্স.এইসের জন্য কাজ করতে পারে তা আমার পক্ষে কার্যকর হয়নি। উইন্ডোজ 2012 সার্ভারটি খুব পুরানো? আমি এটি পরিবর্তন করতে পারি না, যা পেয়েছি তা নিয়ে কাজ করতে হবে।
fromxsf
যে ডিরেক্টরিতে প্রতিটি ডিরেক্টরি প্রক্রিয়াdlist.txt
করার পরে ডিরেক্টরিটিকে একটি প্যারামিটার হিসাবে-cd
এবং অস্থায়ী আউটপুট ফাইলকে অন্য প্যারামিটার হিসাবে প্রয়োজন যা% টেম্পাউটফাইল%।- আমাদের পাওয়ারশেল রয়েছে বলে মনে হয় না বা কমপক্ষে কোনও পথ সেট করা যায় না।
এখানে ফর লুপটি ব্যবহার করার চেষ্টা করেছি:
set destdir=c:\tempdir
set outfile=%destdir%\%1.txt
FOR /F %%f in ('type dlist.txt') DO (
echo "--------------------"
echo Basedir=%%f should be directory
set tempoutfile=../%%f.txt
echo outfile=%destdir%\%outfile%
echo tempoutfile=%tempoutfile%
echo Processing dir %%f, to tempfile %tempfile%
pause
rem Below is the command to process the dir name in %%f to make a temp file in %tempoutfile%
fromxsf %tempoutfile% -cd %%f +m -nbs -Rep -nofrills
if exist "%destdir%" (
echo " " >> %outfile%
echo "{DIVNAME=%i}" >> %outfile%
rem Append %tempoutfile% to %outfile%.
type %tempoutfile% >> %outfile%
del %tempoutfile%
)
)
উপরের জন্য %% f এর মান সর্বদা dlist.txt এর প্রথম লাইন। এটা আমি চাই না।
আমি লুপটিতে যা করছি ডিরেক্টরিটির প্রক্রিয়াজাত সামগ্রীগুলি% টেম্পাইল% তে একটি টেম্প ফাইলে আউটপুট করে আউট করছি এবং তারপরে% টেম্পাইল% এর% 1%% ডেডফায়ার% \% আউটফিল% এর বিষয়বস্তুগুলিকে একত্রিত করছি। mycommand
কমান্ড লাইন আর্গ হিসাবে ইনপুট ডিরেক্টরি %% f প্রয়োজন। আমি কেবল STDOUT পুনর্নির্দেশ করতে এবং আউটপুট%%% dddir% \% আউটফিল% এ যুক্ত করতে পারি না।
লুপের জন্য কিছু বিকল্প আমি চেষ্টা করেছি:
FOR %%f in (dlist.txt) DO (
। এই ক্ষেত্রে%%f
সর্বদা দ্বিতীয় dir নামdlist.txt
এবং কখনও পরিবর্তন হয় না।
কেউ কি করতে পারে জানেন?
ধন্যবাদ!
সম্পাদনা: ধন্যবাদ আমি বিলম্বিত সম্প্রসারণ এবং গুগল ব্যবহার করে অন্য একটি পোস্ট ব্যবহার করে এটি আবিষ্কার করেছি। লুপটির মূলটি হ'ল পাঠ্য ফাইলে থাকা dlist.txt
ফাইলের নামগুলি প্রতি লাইনে একটি ফাইল নাম। আমার সমস্যাটি ছিল অনুপস্থিত "tokens=*"
বিকল্প। এছাড়াও! পরিবর্তনশীল! নোটেশন অবশ্যই লুপে প্রতিটি সময় ব্যবহার করা উচিত। ভেরিয়েবলের মানগুলি দেখানোর জন্য নীচের লুপটিতে ইকো স্টেটমেন্টও রয়েছে।
setlocal EnableDelayedExpansion
set outfile=c:\temp\tempout.txt
del %outfile%
FOR /f "tokens=*" %%f in (dlist.txt) DO (
echo.
echo --------------------
set indir=%%f
echo Basediv indir=!indir!
echo Processing division !indir!
echo. >> %outfile%
echo {DIVNAME=!indir!} >> %outfile%
pause
fromxsf %outfile% -cd !indir! +m -nbs -Rep -nofrills -a
)
আমার লুপের মূল বিষয়গুলি
%%f
প্রতি লুপে একবার মাত্র ভেরিয়েবল ব্যবহার করুন এবং এটিকে নির্ধারণ করুনindir
। এরপরে!indir!
ভেরিয়েবলটি ব্যবহার করুন ।- আমি এর ব্যবহার সরিয়ে ফেললাম
%tempoutfile%
কারণfromxsf
ফাইলটি যদি উপস্থিত থাকে তবে কমান্ডটি আমাকে নিজের থেকে আউটপুট সংযোজন করতে দেয় (-a) which
!variable!
।