我正在編寫一個批處理文件,用於自動爲我們銷售的產品創建典型的文件夾結構。我希望能夠使用2個可選參數來調用我的批處理文件;供應商的名稱和用於一次創建大量文件夾的文件。如果沒有供應商提供,則腳本通過標準輸入詢問供應商是誰。如果沒有提供文件,腳本會詢問您想要創建的文件夾的名稱。如果文件是作爲參數傳遞,我希望腳本逐行讀取文件,併爲每行創建一個文件夾,以該行的內容命名。這裏是:readFile
功能:如何將參數(不是命令行參數)傳遞給批處理腳本中的函數
:readFile
echo "Reading from file: %theFile%"
FOR /F "delims=," %%a IN (%theFile%) do (
call:makeFolder %%a
)
goto:EOF
這裏是:makeFolder
功能可選需要創建文件夾的名稱的說法。如果沒有提供參數,它會通過標準輸入詢問名稱。
:makeFolder
if [%1]==[] (
set /p product="Enter product name: "
) else (
set product=%1
)
if exist "P:\%supplier%\Products\%product%" (
echo.
echo The folder '%product%' already exists.
echo.
goto:EOF
)
mkdir "P:\%supplier%\Products\%product%\Images\Web Ready"
mkdir "P:\%supplier%\Products\%product%\Images\Supplied"
mkdir "P:\%supplier%\Products\%product%\Images\Edited"
goto:EOF
我的問題是,在:makeFolder
功能%1
是指在命令行上給出的第一個參數,而不是在:readFile
函數提供的一個。我怎樣才能做到這一點?警告:我是很新的批處理腳本,所以你可能不得不跟我說話,就像我有點愚蠢。
%1是第一個參數,如果你從命令行得到第一個參數,那麼在你的主代碼之後可能會有'exit/b'day缺失 – jeb
@jeb:這應該是一個答案,我的想法。我意識到這是一種猜測,但這可能是一種猜測。即使在OP案例中出現了錯誤,對其他人(可能會遇到這個問題的人)來說,它仍然應該作爲一個可能的答案來考慮。 –
@jeb對不起,我不明白,'exit/b'day'是什麼?我知道$ 1是命令行中的第一個參數,但據我瞭解,當引用函數的第一個參數時,您也使用$ 1。我的問題是我能做什麼來訪問傳遞給':makeFolder'的第一個參數而不引用第一個命令行參數? – MrMisterMan