批处理文件循环返回开始

时间:2014-01-27 17:00:54

标签: batch-file

我搜索了网站,并且能够提取代码,这些代码实际上处理了我想要实现的所有目标。但是,如果我想重新键入另一个工作表编号,我无法获得最后一点工作,即循环回到开始。我的代码:

@Echo Off

cd "C:\temp\CopiedTo"

del *.* /Q

CLS
:start

@Echo Off
Set /P SheetNo=Enter the Sheet Number to Copy:

if exist "C:\temp\%SheetNo%.txt" (Copy "c:\temp\%sheetNo%.txt" "c:\temp\copiedto"

) Else (Echo set choice=
set /p choice="This Sheet Number Is Currently Not in the Directory - Do you wish to Re-Key Again? Press 'y' and enter for Yes: "
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='y' goto start
)

2 个答案:

答案 0 :(得分:0)

您在块内使用%choice%变量。所以你需要延迟扩展。 放一个

setlocal enabledelayedexpansion 

在您的脚本开头,并在块内使用!choice!而不是%choice%

并且:在echo之前删除set choice=(可能在那里进行测试)

答案 1 :(得分:0)

这是另一种方法,使用更简单的界面。

请注意,当前面的del *.*命令失败并且当前的任何目录都可能被破坏时,它自身的自动cd是一个危险的命令,因此最好指定文件夹或执行某些操作额外测试以检查CD是否失败。

CD命令现在有/d开关,以满足另一个当前驱动器的需要。

@Echo Off
cd /d "C:\temp\CopiedTo"
del "C:\temp\CopiedTo\*.*" /Q

CLS
:start

@Echo Off
set "sheetno="
Set /P "SheetNo=Enter the Sheet Number to Copy (press enter to quit): "

if not defined sheetno goto :EOF

if exist "C:\temp\%SheetNo%.txt" (
        echo copying "%sheetNo%.txt"
        Copy "c:\temp\%sheetNo%.txt" "c:\temp copiedto" >nul
    ) Else (
        echo "Sheet Number "%sheetNo%.txt" Is Currently Not in the Directory
    )
goto :start