[解決済み] バッチファイル:(この時点では想定外でした
2022-02-24 19:57:30
質問
このエラーが発生します。
( この時は想定外でした
の値を受け入れた後にエラーが発生します。
a
. このような問題を引き起こす可能性のあるNULL値がないか、試してみましたが、うまくいきませんでした。
echo off
cls
title ~USB Wizard~
echo What do you want to do?
echo 1.Enable/Disable USB Storage Devices.
echo 2.Enable/Disable Writing Data onto USB Storage.
echo 3.~Yet to come~.
set "a=%globalparam1%"
goto :aCheck
:aPrompt
set /p "a=Enter Choice: "
:aCheck
if "%a%"=="" goto :aPrompt
echo %a%
IF %a%==2 (
title USB WRITE LOCK
echo What do you want to do?
echo 1.Apply USB Write Protection
echo 2.Remove USB Write Protection
::param1
set "param1=%globalparam2%"
goto :param1Check
:param1Prompt
set /p "param1=Enter Choice: "
:param1Check
if "%param1%"=="" goto :param1Prompt
if %param1%==1 (
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect /t REG_DWORD /d 00000001
echo USB Write is Locked!
)
if %param1%==2 (
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect /t REG_DWORD /d 00000000
echo USB Write is Unlocked!
)
)
pause
解決方法は?
このエラーが発生するのは
param1
if 文が評価されると、遅延展開のないスコープ付き変数であるため、param は常に null になります。
括弧を使用すると、その括弧内のコマンドと変数がすべて展開されます。 このとき、param1には値がなく、if文は無効となります。 遅延展開を使用すると、実際にコマンドが呼ばれたときにのみ変数が展開されます。
また
if not defined
コマンドを使用して、変数が設定されているかどうかを判断します。
@echo off
setlocal EnableExtensions EnableDelayedExpansion
cls
title ~USB Wizard~
echo What do you want to do?
echo 1.Enable/Disable USB Storage Devices.
echo 2.Enable/Disable Writing Data onto USB Storage.
echo 3.~Yet to come~.
set "a=%globalparam1%"
goto :aCheck
:aPrompt
set /p "a=Enter Choice: "
:aCheck
if not defined a goto :aPrompt
echo %a%
IF "%a%"=="2" (
title USB WRITE LOCK
echo What do you want to do?
echo 1.Apply USB Write Protection
echo 2.Remove USB Write Protection
::param1
set "param1=%globalparam2%"
goto :param1Check
:param1Prompt
set /p "param1=Enter Choice: "
:param1Check
if not defined param1 goto :param1Prompt
echo !param1!
if "!param1!"=="1" (
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect /t REG_DWORD /d 00000001
echo USB Write is Locked!
)
if "!param1!"=="2" (
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\ /v WriteProtect /t REG_DWORD /d 00000000
echo USB Write is Unlocked!
)
)
pause
endlocal
関連
-
[解決済み] SwiftのIF LETはどのように評価されるのですか?
-
[解決済み] バッチファイルに引数を渡すにはどうしたらいいですか?
-
[解決済み] Windowsのバッチファイルから長いコマンドを複数行に分割する
-
[解決済み] 1つの.BATファイル内で複数の.BATファイルを実行する方法
-
[解決済み] バッチファイル内で改行をエコーする方法を教えてください。
-
[解決済み] N日以上前のファイルを削除するバッチファイル
-
[解決済み] バッチファイルでの変数の定義と使用
-
[解決済み】バッチ/cmdで "コメントアウト"(コメント追加)するには?
-
[解決済み】Windowsのバッチファイル:.batと.cmdの違いは?
-
[解決済み] IF」は高いのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] OCamlにおける複数のif文の実装
-
[解決済み] Makefileの中で条件がある場合、ターゲット内部で
-
[解決済み] gitlabciでif-else条件を使用する方法
-
[解決済み] 中括弧のないif文を使用するのは悪い習慣ですか?[クローズド]
-
[解決済み] バッチファイル:(この時点では想定外でした
-
[解決済み] SwiftのIF LETはどのように評価されるのですか?
-
[解決済み] cmake if else with option
-
[解決済み] GoにはPythonのような "if x in "の構成がありますか?
-
[解決済み】Swiftでif文に範囲演算子を使うことはできますか?
-
[解決済み] ワンライナーでif else文を書くには?重複