我正在编写一个批处理文件,用于自动创建销售产品的典型文件夹结构。我希望能够使用两个可选参数调用我的批处理文件:供应商名称和一次性创建许多文件夹的文件。如果未提供供应商,则脚本会通过标准输入询问供应商是谁。如果未提供文件,则脚本会要求您输入要创建的文件夹的名称。如果作为参数传递了文件,我希望脚本逐行读取该文件,并为每一行创建一个以该行内容命名的文件夹。这里是: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
函数中提供的参数。我该如何解决这个问题?注意:我对批处理脚本非常陌生,所以你可能需要像对待有点傻的人一样和我交流。
exit /b'day
是什么意思。我知道 $1 是命令行传入的第一个参数,但我也知道在引用函数的第一个参数时也会使用 $1。我的问题是如何访问传递给:makeFolder
的第一个参数而不引用第一个命令行参数。 - punkrockbuddyhollyecho Parameter for makeFolder: %%a
,并在makeFolder的第一行插入echo Parameter received %1
。这样可以帮助你看清发生了什么。 - Aacini