Я пишу командный файл для автоматизации создания типичных структур папок для продуктов, которые мы продаем. Я хотел бы иметь возможность вызывать свой командный файл с двумя необязательными аргументами; имя поставщика и файл для одновременного создания множества папок. Если поставщик не указан, сценарий через стандартный ввод спрашивает, кто поставщик. Если файл не предоставлен, сценарий запрашивает имя папки, которую вы хотите создать. Если файл передается в качестве аргумента , я бы хотел, чтобы сценарий читал файл построчно и создавал папку для каждой строки, названную в честь содержимого этой строки. Вот функция : 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
ссылается на 1-й аргумент, указанный в командной строке, а не на тот, который указан в : readFile
функция. Как я могу этого добиться? Предостережение: я очень новичок в пакетном сценарии, поэтому вам, возможно, придется говорить со мной, как будто я немного глуп.