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