这是获取数据输入的另一种方法:
批处理文件告诉你如何结束数据输入,然后它提示输入数据集——我已经显示了输入的两组数据——然后它使用循环来显示输入的数据集。
您可以输入无限数量的数据集。
这是屏幕显示:
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
用于存储数据输入集,并在 for-in-do 循环中使用,它读取 data.csv 以回显输入的数据集。
第二行删除data.csv(如果存在),这样之前的数据集就不会被重用。