[英]passing parameters to bat file as 1 string
看起來很簡單。 在一個bat文件中,我調用一個程序,該程序接受命令行參數我將parms作為一個字符串,我用“”周圍嘗試了它而不是它只看到一個parm(如果它猜到了它的空間)
所以問題是如何傳遞字符串,作為參數列表實際的字符串在下面,必須用“”等格式化
-U romeirj -P Abc123 -F C:\inetpub\wwwroot\russ\crexport\russ.rpt -O C:\inetpub\wwwroot\russ\russ.pdf -A "startdate: 01-01-2010" -A "gender:M" -A "type:PENDJUD"
想從bat文件中調用它看起來像
batfile.bat parmstring
bat文件內容
program.exe %1
只要所有批處理參數都應該傳遞給您的程序,您就可以使用您指定的參數調用批處理,並在批處理腳本中使用以下內容。
program.exe %*
如果您只想將一些批處理參數傳遞給被調用程序,問題會變得復雜得多。
不幸的是,沒有方法可以在引用的字符串中轉義引號。 逃避參數分隔符也是不可能的。 因此,不可能在單個批處理參數中同時嵌入空格和引號。
SHIFT命令可以去除前導參數,但%*
總是擴展到原始參數列表; 它忽略了之前的SHIFT操作。
FOR / F不會忽略引用的分隔符,因此它沒有幫助。
簡單的FOR可以正確解析引用的參數列表,但它會擴展*
和?
使用文件系統的字符。 這可能是個問題。
剩下要做的唯一事情就是使用GOTO循環與SHIFT結合來構建包含所需參數的字符串。
假設前3個參數嚴格用於批處理文件,其余參數將傳遞給被調用程序。
@echo off
setlocal
set "args="
:buildProgramArgs
if [%4]==[] goto :argsComplete
set args=%args% %4
shift /4
goto :buildProgramArgs
:argsComplete
program.exe %args%
::args %1 %2 and %3 are still available for batch use
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.