2017-08-15 73 views
0

我已經寫在DOS /批量生成其他批處理文件爲需要的工具...生成一個批處理文件%*作爲參數的

工作正常,是非常有用的...
基本內工作是相同做

echo dir /s \windows\*.log > logs.cmd 

本作名爲腳本「日誌」有一些功能
(這是一個簡化只是爲了說明目的)

RECE ntly我需要添加%*作爲生成批處理文件的參數
(捕捉從命令行的所有輸入參數)

的問題是,我不知道如何生成的「%*」序列

我嘗試從網上
但沒有幾個轉義序列和技巧,谷歌(ED)似乎工作

?任何想法?

+1

什麼轉義序列中有你試過嗎? – jmoon

回答

1

this頁,%標記必須轉義是這樣的:%%(雙百分號,所以第二個會顯示

你應該能夠在*傳遞作爲一個正常的轉義字符,那就是:^%。如果不行,請嘗試"*"(但^逃生應該工作)

所以綜合起來,傳遞%*參數去你的代碼應該是這樣的:。%%^*

+0

這就是問題所在......如果您在「回聲」中使用該序列,它將起作用......如果您將它作爲參數傳遞給「調用」,它將被擴展......即使它以這種方式逃脫了。 。 ?有什麼想法嗎?? – ZEE

+1

你是什麼意思擴大? – jmoon

+0

在通過調用調用的子例程(或外部.cmd)中,接收到的參數不是字符串「%*」,而是任何參數傳遞給包含調用的.cmd ......感謝您的輸入。 。只是證明我做的事情是正確的...他們只是不工作,因爲他們應該... – ZEE

1

幾乎諾斯荷蘭國際集團添加到jmoon的答案,但它不爲你工作(但對我的作品),你可以用一些嘗試像

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    echo Current script arguments 
    echo -------------------------------------------- 
    echo %* 
    echo -------------------------------------------- 

    >"output.cmd" (
     echo @echo off 
     echo echo %%* 
     echo for %%%%a in (%%*^) do echo %%%%a 
    ) 

    echo Generated file 
    echo -------------------------------------------- 
    type output.cmd 
    echo -------------------------------------------- 

    echo Pass different set of arguments 
    echo -------------------------------------------- 
    call output.cmd 1 2 3 4 
    echo -------------------------------------------- 

    echo Pass our arguments 
    echo -------------------------------------------- 
    call output.cmd %* 
    echo -------------------------------------------- 

    echo Pass escaped string 
    echo -------------------------------------------- 
    call output.cmd %%%%* 
    echo -------------------------------------------- 

這將產生

W:\>input.cmd a b c d e 
Current script arguments 
-------------------------------------------- 
a b c d e 
-------------------------------------------- 
Generated file 
-------------------------------------------- 
@echo off 
echo %* 
for %%a in (%*) do echo %%a 
-------------------------------------------- 
Pass different set of arguments 
-------------------------------------------- 
1 2 3 4 
1 
2 
3 
4 
-------------------------------------------- 
Pass our arguments 
-------------------------------------------- 
a b c d e 
a 
b 
c 
d 
e 
-------------------------------------------- 
Pass escaped string 
-------------------------------------------- 
%* 
-------------------------------------------- 
W:\> 
+0

謝謝...我試圖避免「enableextensions」「disabledelayedexpansion」,因爲它與批處理文件中使用的其他配置衝突... – ZEE

+0

@ZEE,我包括'setlocal ...'在幾乎所有發佈的代碼中都行,聲明測試代碼工作的環境。在這種情況下,它不是必需的。 –

相關問題