2013-04-03 8 views
7

私はフラッシュドライブを消去して再フォーマットする簡単なバッチスクリプトを作成しようとしています。それは他の人のためで、私はC :, D:などのフォーマットをブロックすることで比較的安全にしようとしています。elseコマンドのバッチスクリプト

私は、エラーキャッチするために使用できる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つの変数を定義する代わりに、ユーザー入力を待ち受ける1つの変数を入れ、存在する場合はそれを受け入れる)。

これは私の最初の進出バッチスクリプト(と一般的なスクリプト)と私はオンザフライを学んでいるので、あなたがそれを行うことができます "ダンベル"、より良い。

ありがとうございます。

+0

はまた、あなたのechoコマンドで括弧をエスケープする必要があります。 –

+0

この括弧はどこに配置する必要がありますか?私はそれを "フラッシュドライブ"の後に置き、コマンドをループさせた。 – CharlieTango92

+0

あなたのコードにecho blah ...(コロンなし)のようなものがあります。あなたは括弧をエスケープする必要があります。私は私の電話に出ているので、あなたは私の問題を見ることができます。 –

答えて

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 
) 
関連する問題