0

これはおそらくばかげたことだと思います。私はバッチ プログラマーの専門家ではありませんが、ちょっとした問題に直面しています。

バックアップ スクリプトからバックアップ機能を取り除き (これは素晴らしく機能します)、それをフォーマット スクリプトにしようとしました。含まれるコード:

@echo off
title CrucialBlue Simple Format Utility
echo Drives will be formatted, and all data will be lost! Please ensure the drive letter you chose is correct before continuing
echo Retrieving list of disk locations...
wmic logicaldisk get caption,volumename,providername
echo.
set /p drive=Enter only the drive letter of the drive you're attempting to format: 
set /p form=Enter a file system to use (NTFS/FAT/FAT32):
echo.

IF EXIST %drive% format %drive%: /q fs:%form%
IF NOT EXIST %drive% echo Your drive was not formated because the drive you entered does not exist.
echo.

echo Program completed. Press any key...
pause > nul

問題は、実際の関数が両方の変数を呼び出す IF EXIST ステートメントにあると思います...誰かアイデアはありますか?

4

2 に答える 2

1

変化する

IF EXIST %drive% format %drive%: /q fs:%form%

IF EXIST %drive%: format %drive%: /q fs:%form%

:(最初の の後に追加されていることに注意してください%drive%)

于 2013-09-20T20:02:34.620 に答える
0

バッチから組み込みの連想配列を使用すると、それを実現できます。

@ECHO OFF &SETLOCAL
title CrucialBlue Simple Format Utility
echo Drives will be formatted, and all data will be lost! Please ensure the drive letter you chose is correct before continuing
echo Retrieving list of disk locations...
for /f %%a in ('wmic logicaldisk get caption') do set "$%%a=1"
wmic logicaldisk get caption,volumename,providername
echo.
set /p "drive=Enter only the drive letter of the drive you're attempting to format: "
set /p "form=Enter a file system to use (NTFS/FAT/FAT32): "
echo(
IF DEFINED $%drive%: (
    ECHO format %drive%: /q fs:%form%
) ELSE (
    echo Your drive was not formatted because the drive you entered does not exist.
)
echo(

出力を見て、問題がなければ削除ECHOします。

于 2013-09-20T20:02:01.713 に答える