উইন্ডোজ ব্যাচের ফাইলগুলির কি% * নির্মাণ রয়েছে?


উত্তর:


10

উইন্ডোজ ব্যাচ ফাইলগুলি (উইন্ডোজ এক্সপি থেকে, তবে সম্ভবত পূর্ববর্তী) %*কনস্ট্রাক্টকে সমর্থন করে , যা% 1 থেকে সমস্ত পরামিতিগুলিতে মূল্যায়ন করে।

দুর্ভাগ্যক্রমে, এটি SHIFTআদেশটি সম্মান করে না , সুতরাং নিম্নলিখিতগুলি কাজ করবে না:

@echo off
set EATEN=%1
shift

call other.bat %*

এটি এখনও প্রথম প্যারামিটারটি দ্বিতীয় ব্যাচের ফাইলে পাস করবে।


2
দ্রষ্টব্য: %*সাদা স্থান / উদ্ধৃতি সংরক্ষণ করে।
অ্যারন দিগুল্লা 4'19

10

আপনি এই জাতীয় কিছু ব্যবহার করে সমস্ত আরগগুলি একত্রিত করতে পারেন:

set args=%1
shift
:start
if [%1] == [] goto done
set args=%args% %1
shift
goto start

:done
(use %args% here)

এটি কতগুলি যুক্তিই বিবেচনা না করেই কাজ করে।


2

আপনি যদি প্রথম 3 টি প্যারামিটার বাদ দিতে চান, উদাহরণস্বরূপ, এবং বাকিগুলিতে পাস করুন:

@echo off
for /f "tokens=1-3*" %%a in ("%*") do (
   set par1=%%a
   set par2=%%b
   set par3=%%c
   set therest=%%d
   )

call other.bat %therest%

পরামিতিগুলিতে উদ্ধৃতিগুলির সাথে সমস্যা হতে পারে।

প্যাট্রিক কাফকে কুডোস, /programming/382587/how-to-get-batch-file-paraters-from-nth-position-on


1

হ্যাঁ তারা করে.

আপনি আপনার উদাহরণটি নিম্নরূপ লিখতে পারেন:

@echo off
call other.bat %*

এছাড়াও: শিফট জানালা সমর্থিত ... দেখুন এই
তবে প্রকৃতপক্ষে, এই শেষ লিঙ্কটি নিশ্চিত করে যে শিফটটি% * এর সাথে একত্রে কাজ করে না:

Sh
  শিফট শিফট সহ% * ব্যবহার করার ফলে% * ব্যাচের প্যারামিটারে কোনও প্রভাব নেই।


দুঃখিত লিঙ্কগুলি খারাপ ছিল ... এখনই ঠিক করা উচিত।
ফ্রেটজে

(উদ্ধৃতি) শিফট শিফট সহ% * ব্যবহারের% * ব্যাচের প্যারামিটারে কোনও প্রভাব নেই ((/ উদ্ধৃতি)
ওয়েজ

ডাউনটা কেন? প্রশ্নটি প্রায়% * সম্পর্কে শিফট সম্পর্কে নয়।
ফ্রেটজে

আপনার প্রথম উত্তরের কেবল "হ্যাঁ তারা করেন" ছিল যা কোনও সুস্পষ্ট লিঙ্ক ছিল না (বা উত্তর)। আপনার শেষ সম্পাদনাটি একটি শালীন উত্তরের অনেক বেশি, সম্ভবত সে কারণেই ...
থাইজ

আমি আরও ব্যাখ্যা যোগ করার পরে আসলে ডাউনভোটটি ঘটল। এবং আমি সম্মত হই যে "হ্যাঁ তারা করেন" লিঙ্কটি সুস্পষ্ট ছিল না, তবে এটি হাতের প্রশ্নের সঠিক উত্তর ছিল ...
ফ্রেটজে

0
@echo off
cls
setlocal enabledelayedexpansion

:: Disable the display of information by changing [set "_ENABLE_INFO="] to [set "_ENABLE_INFO=::"].
set "_ENABLE_INFO="
set _DBQ="

set "_PARMS.ORIGINAL=%*" && if defined _PARMS.ORIGINAL (
   if not defined _PARMS.IDX (
      echo Parameter Index^(es^) to extract eg.:
      echo 1 2 5 9 11 39 400
      set /p "_PARMS.IDX=>"
   )
   set "_PARMS.IDX=¡!_PARMS.IDX: =¡ ¡!¡"
   set "_PARMS.IDX=!_PARMS.IDX:¡¡=!"
   set "_PARMS.IDX=!_PARMS.IDX: =!"
   call :_FN_PROC.STRING %*
%_ENABLE_INFO% goto :FINISH
   goto :eof
) else (
   echo No input parameters.
)
goto :eof


:_FN_PROC.STRING
set "_PARMS.PROCESS.STRING=%*"
:_FN_PROC.STRING.LOOP
set "_PARMS.PROCESS.STRING=!_PARMS.PROCESS.STRING:%_DBQ%=¡!"
set /a _PARMS.COUNT+=1
for /f "tokens=1* delims= " %%a in ("!_PARMS.PROCESS.STRING!") do (
   set _PARMS.TMP.CHECK=%%a
   set _PARMS.PROCESS.STRING=%%b
   if "!_PARMS.TMP.CHECK!" NEQ "!_PARMS.TMP.CHECK:¡=!" (
      for /f "tokens=1* delims=¡" %%c in ("%%a !_PARMS.PROCESS.STRING!") do (
         set _PARMS.TMP.CHECK="%%c"
         set _PARMS.PROCESS.STRING=%%d
      )
   )
)

if "!_PARMS.IDX:¡%_PARMS.COUNT%¡=!" EQU "!_PARMS.IDX!" (
   set _PARMS.REMAINING=!_PARMS.REMAINING! !_PARMS.TMP.CHECK!
   set _PARMS.IDX=!_PARMS.IDX!{%_PARMS.COUNT%}
) else (
   set _PARMS.EXTRACTED=!_PARMS.EXTRACTED! !_PARMS.TMP.CHECK!
   set _PARMS.IDX=!_PARMS.IDX:¡%_PARMS.COUNT%¡=!
   set _PARMS.IDX=!_PARMS.IDX![%_PARMS.COUNT%]
)

if "!_PARMS.PROCESS.STRING: =!"=="" (set _PARMS.PROCESS.STRING=)
if defined _PARMS.PROCESS.STRING (goto :_FN_PROC.STRING.LOOP)

set _DBQ=
set _PARMS.TMP.CHECK=
if defined _PARMS.REMAINING (set _PARMS.REMAINING=!_PARMS.REMAINING:~1!)
if defined _PARMS.EXTRACTED (set _PARMS.EXTRACTED=!_PARMS.EXTRACTED:~1!)
goto :eof


:FINISH
echo.
echo _PARMS.IDX ^:
echo    ¡^=¡ no Parameter Index was specified for extraction.
echo    ¡n¡ nth Parameter was not processed (Index larger than Parameters Count).
echo    [n] nth Parameter was Extracted.
echo    {n} nth Parameter was Ignored (Remaining).
echo.
set _
goto :eof

সমস্ত বিশেষ সীমানার সংরক্ষণ করে। কমান্ড লাইন সীমা অনুযায়ী 8175 অক্ষরে ফিট করা যায় এমন অনেকগুলি প্যারামিটার সমর্থন করে (ব্যাচ ফাইলের নাম, সিআরএলএফ এবং নির্দিষ্ট করা থাকলে ব্যাচ পাথ সহ)। প্যারামিটারগুলিকে ডাবল কোট দিয়ে গ্রুপ করা যায় (উদাঃ "sw1 = / শান্ত / এড়িয়ে যান: 1 / শুরু = 3")। দ্রষ্টব্য: ডাবল উদ্ধৃতি সংরক্ষণ করা হয়। ডাবল উদ্ধৃতিগুলির আচরণ আশা করা হয় (এমনকি যদি ভুলভাবে ব্যবহার করা হয় তবে উদাহরণস্বরূপ কেবলমাত্র একা বা "" বা "" ব্যবহৃত হয়)। বাগ রিপোর্ট দেওয়ার আগে দয়া করে কোডটি প্রথমে ডিবাগ করুন।
ধর্ম লিওনার্দি

এটি খুব বিস্তৃত উত্তর call other.batহ'ল প্রচুর ডিবাগ তথ্য দেখায়, যদিও এটি সরাসরি মূল প্রশ্নের উত্তর দেয় না: প্রদত্ত প্যারামিটারগুলি দিয়ে কীভাবে ব্যবহার করা যায় :( আমি "other.bat" কোথায় লিখব? নিষ্কাশনের জন্য "প্যারামিটার সূচক (এস) অপসারণ করা কি সম্ভব? "ক্যোয়ারী? এছাড়াও, clsচূড়ান্ত সমাধানের প্রয়োজন হয় না
izogfif
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.