2013-04-03 55 views
7

我試圖做一個簡單的批處理腳本來擦除/歸零閃存驅動器並重新格式化它。這是爲了別人,所以我試圖讓它相對安全,通過阻止格式化爲C :, D:等。批處理腳本如果其他命令

我正在尋找一個IF ELSE類型的命令,我可以使用,是一個錯誤捕獲-所有。

這裏(的主要部分),我有什麼ATM

: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 

是無效的語法,但我會爲了達到同樣的目標使用?我知道有一種更有效的方法來做到這一點(例如,不是爲可能的驅動器字母定義4個變量,而是將單個變量傾聽用戶輸入並在存在時接受它。)

這是我第一次嘗試批處理腳本(以及一般的腳本),我正在學習,所以你可以做到的「笨蛋」越好越好。

在此先感謝。

+0

您還需要逃避echo命令的括號。 – 2013-04-03 22:39:36

+0

這個括號需要放在哪裏?我把它放在「閃存驅動器」之後並且命令循環。 – CharlieTango92 2013-04-04 00:08:51

+0

在你的代碼裏它有一些像echo blah ...(無冒號)的東西......你需要跳過括號。我在手機上,所以你可以看到我的問題。 – 2013-04-04 02:21:54

回答

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 
) 
相關問題