批处理脚本if else命令

8
我正在尝试制作一个简单的批处理脚本来清除/归零闪存驱动器并重新格式化它。这是为了别人,因此我试图通过阻止对C:, D:等的格式化来使其相对安全。
我正在寻找一个IF ELSE类型的命令,可以用作错误捕获。
以下是我目前拥有的主要部分。
:again
echo.
cls
echo.
echo  Please select the drive letter for the flash
echo  drive you wish to erase
echo.
echo    **** DO NOT SELECT C: OR D: ****
echo.
echo.
echo   *** Enter letter (no colon) ONLY e.g. "E" ***
echo.
set /p answer=
cls
echo.
echo.
echo.
if /i "%answer:~,1%" EQU "e" format E: /x /fs:FAT32 /v:FORENSICS /p:2
if /i "%answer:~,1%" EQU "f" format F: /x /fs:FAT32 /v:FORENSICS /p:2
if /i "%answer:~,1%" EQU "g" format G: /x /fs:FAT32 /v:FORENSICS /p:2
if /i "%answer:~,1%" EQU "h" format H: /x /fs:FAT32 /v:FORENSICS /p:2
if /i "%answer:~,1%" NOT exist goto again && echo    Please provide a valid drive letter for flash drive
echo.

现在我知道:

if /i "%answer:~,1%" NOT exist goto again && echo    Please provide a valid drive letter for flash drive

“is not valid syntax”,但是我应该使用什么来达到相同的目的?我知道有更有效的方法来做这件事(例如,不是为可能的驱动器字母定义4个变量,而是定义一个变量来监听用户输入并接受它,如果存在的话)。

这是我第一次尝试批处理脚本(以及脚本编写),我正在现学现卖,所以您能让它更简单易懂就更好了。

提前感谢。


你还需要在echo命令中转义括号。 - BDM
这个括号需要放在哪里?我把它放在“闪存驱动器”后面,结果命令就陷入了循环。 - CharlieTango92
在你的代码中,如果有类似于echo blah...(没有冒号)的内容,你需要转义括号。我现在正在使用手机,所以你可以看到我的问题。 - BDM
1个回答

13

试一下这个:

echo.%answer:~,1% | findstr /r /i "[e-h]"
if %errorlevel% equ 0 (
  format %answer:~,1%: /x /fs:FAT32 /v:FORENSICS /p:2
) else (
  echo Please provide a valid drive letter for flash drive.
  goto again
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接