web-dev-qa-db-ja.com

elseコマンドの場合のバッチスクリプト

フラッシュドライブをワイプ/ゼロ化して再フォーマットする簡単なバッチスクリプトを作成しようとしています。他の人のためのものなので、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

は有効な構文ではありませんが、同じ目標を達成するために何を使用できますか?私はこれを行うためのより効率的な方法があることを知っています(たとえば、可能性のあるドライブ文字に対して4つの変数を定義する代わりに、ユーザー入力をリッスンし、存在する場合はそれを受け入れる単一の変数を配置します)。

これは、バッチスクリプティング(および一般的なスクリプティング全般)への私の最初の進出であり、オンザフライで学習しているので、それを作成することができる「ごまかし」の方が優れています。

前もって感謝します。

8
CharlieTango92

これを試して:

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
)
13
Ansgar Wiechers