私たちが販売する製品の典型的なフォルダ構造の作成を自動化するバッチファイルを作成しています。 2つのオプションの引数を指定してバッチファイルを呼び出すことができます。一度にたくさんのフォルダを作成するためのサプライヤの名前とファイル。サプライヤが供給されない場合、スクリプトはサプライヤが誰であるかを標準入力を介して尋ねる。ファイルが指定されていない場合、スクリプトは作成するフォルダの名前を尋ねます。ファイルがであれば、スクリプトはファイルを1行ずつ読み込み、その行の内容に基づいて名前を付けたフォルダごとにフォルダを作成します。ここで: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を参照していることです。どうすればこれを達成できますか?警告:私はです。バッチスクリプトには新しいので、私はちょっとばかげているように私に話をしなければならないかもしれません。
%1が最初の引数です。コマンドラインから最初のパラメータを取得した場合、メインコードの後ろに 'exit/b'dayがない可能性があります。 – jeb
@jeb:これは、私の意見。私はそれが推測であることを認識していますが、それはおそらく推測です。 OPのケースで間違っていたとしても、それを考慮するために他の人々(この質問に出くわすかもしれない人々)のために*可能な*回答としてそこに残るはずです。 –
@jebごめんなさい、私は理解できません。「退室/退院」は何ですか?私は、$ 1がコマンドラインからの最初のパラメータだと理解していますが、理解しているように、関数の最初の引数を参照するときにも$ 1を使用します。私の質問は、最初のコマンドライン引数を参照せずに ':makeFolder'に渡された最初の引数にアクセスするために何ができるのでしょうか? – MrMisterMan