簡體   English   中英

將參數傳遞給bat文件為1個字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM