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