如果批次中不存在变量



我被卡住了。我在脚本中有一个部分查找文件号,如果它存在,我希望它转到脚本的下一个命令。如果它不存在,我希望它返回到用户再次输入文件号的位置。基本上,如果他们输入了一个不存在的文件号,我希望他们重新输入文件号。如果它真的存在,我恳求他们继续。我得到的是一个循环,我不知道从哪里可以摆脱它

:FileNum
cls
set /P "FileNumber=Please enter File Number: "
if defined FileNumber for /R "bpclientA001M0093" %%I in ("*%FileNumber%*.xml") do copy /Y "%%I" "IlnevalExtractionToolData"
IF NOT EXIST "%FileNumber%" (
echo File Number %FileNumber% Does Not Exist
echo Try again
pause
goto :FileNum 
)
IF EXIST "%FileNumber%" (
goto: result   
) 
@echo off
:result
cls
@echo off
copy Data*.xml Results.txt

如果我输入一个存在的文件号,它会将它们复制到数据文件夹中,但随后会给我"的回显文本;文件号XXXX不存在。再试一次";并将我带回"请输入文件号"提示。如果变量存在,我如何让它进入脚本的结果部分,但如果不存在,我该如何循环回来?

您正在询问您键入的number是否存在,我想永远不会存在,相反,您想测试实际文件是否存在。所以直接解决这个问题。

:FileNum
cls
set /P "FileNumber=Please enter File Number: "
if defined FileNumber for /R "bpclientA001M0093" %%I in ("*%FileNumber%*.xml") do (
copy /Y "%%I" "IlnevalExtractionToolData"
set "fname=%%~I"
)
IF NOT EXIST "%fname%" (
echo File Number %FileNumber% Does Not Exist
echo Try again
pause
goto :FileNum 
)
IF EXIST "%fname%" (
goto: result   
) 
@echo off
:result
cls
@echo off
copy Data*.xml Results.txt

但我会改为:

@echo off
:FileNum
set fname=
set /P "FileNumber=Please enter File Number: "
if defined FileNumber for /R "bpclientA001M0093" %%I in ("*%FileNumber%*.xml") do (
copy /Y "%%I" "IlnevalExtractionToolData"
set "fname=%%~I"
)
if defined fname (
copy "data*.xml" Results.txt
) else (
echo File not found Please try again.
goto :fileNum
)

最新更新