データ入力を取得する別の方法を次に示します。
バッチ ファイルは、データ入力を終了する方法を示し、次にデータ セットの入力を求めます (入力された 2 つのデータ セットを示しました)。次に、ループを使用して、入力されたデータ セットを表示します。
無制限の数のデータ セットを入力できます。
画面表示は次のとおりです。
Press enter when you have finished
Enter data in this format: servername,startdate,enddate \\server1,20010301,20010331
Enter data in this format: servername,startdate,enddate \\server2,20030102,20030103
Enter data in this format: servername,startdate,enddate
"servername=\\server1"
"startdate=20010301"
"enddate=20010331"
"servername=\\server2"
"startdate=20030102"
"enddate=20030103"
Press any key to continue . . .
コードは次のとおりです。コメントからの追加機能で編集されています
@echo off
del data.csv 2>nul
set "MyLogFile=c:\temp3\copy.log"
set "targetdir=c:\temp3"
echo Press enter when you have finished
:loop
set "data="
set /p "data=Enter data in this format: servername,startdate,enddate "
if defined data (
>>data.csv echo %data%
goto :loop
)
for /f "tokens=1,2,3 delims=," %%a in (data.csv) do (
rem echo.
rem echo "servername=%%a"
rem echo "startdate=%%b"
rem echo "enddate=%%c"
pushd "%%a"
for %%x in (*web_feed.out.gz) do (
for /f "delims=." %%y in ("%%x") do (
echo comparing server "%%a" : file "%%x"
if %%y geq %%b if %%y leq %%c (
echo copying "%%x"
echo - date range %%b to %%c and %%y found
copy "%%x" "%targetDir%\%%x" >> "%MyLogFile%"
)
)
)
popd
)
pause
このファイルdata.csv
は、データ エントリのセットを格納するために使用され、入力されたデータのセットをエコーするために data.csv を読み取る for-in-do ループで使用されます。
2 行目は、data.csv が存在する場合は削除し、以前のデータ セットが再利用されないようにします。