0

私はMS Dosで少しばかげた問題を抱えています.基本的に私がしていることは次のとおりです:

ここが C:\BATCH にあると仮定すると... ディレクトリ C:\BATCH 内の任意の数のファイルをパラメータとしてディレクトリ J:\TEXTS にコピーします。探知:

    • その宛先ディレクトリが存在し、存在しない場合は作成します。
    • 渡されたパラメーターを特定します。
    • そこにファイルをコピーするかどうかを示します。

試してみましたが、パラメータをどの部分に置くべきかわかりません。また、変数の値をパラメーターと等しくしようとしますが、できないと思います。

何をしたかはそのままにしますが、パラメーターを使用しました。

@echo off
if not exist J:\texts\nul md J:\texts
set dir=J:\texts
cls

:continue
set /p file="File to copy (END to finish) "
if %file%==END goto end
if not exist %file% goto error1
cls
echo You will copy the file %file% into directory %dir%
pause
cls
copy %file% %dir% >nul
goto loopback

:loopback
goto continue

:error1
cls
echo The file %file% doesnt exist.

:end
4

1 に答える 1

0

パラメータは、などとして渡され%1ます%2。したがって、

YourScript.bat "foo.txt" "bar.txt"

の場合、変数%1にはが含まれ"foo.txt"%2が含まれます"bar.txt"

可変数のパラメーターをサポートするには、コマンドを使用できますshift。すべてのパラメータを1ステップ戻します。したがって、%2は%1になり、%3は%2になります。

したがって、ループ内で、ファイルをに移動して%1からを呼び出し、空shiftになるまでそれを繰り返すことができます。%1

@echo off

rem  Initialization goes here

:start

rem  Check if there are files left.
if %1X==X goto done

echo Copying %1
rem  Actual copying goes here. Maybe some checking
rem  if file exists and stuff like that.
shift
goto start

:done
echo Done.

PS:スクリプトに「error1」というラベルがあります。よりわかりやすい名前を使用することを恐れないでください。10種類以上のエラーが発生した場合は、感謝します。

于 2012-12-11T21:33:59.143 に答える