.bat
Windows 11 でカスタム シャットダウン CMD スクリプト ファイルを作成するには、拡張子またはを付けたテキスト ファイルを作成し、.cmd
そのファイルにスクリプトを記述します。
1. よく使われる文法
1.メモ:レム
rem 这里是注释
2.一時停止:一時停止
pause
: 実行中のバッチ ファイルを一時停止し、実行を続行するためにキーを押すようにユーザーに求めます。
rem cmd脚本文件代码
pause
3. テキストの印刷: エコー
echo
: テキストを印刷する
echo %os%
: オペレーティング システム名を表示します。echo off
:バッチファイル内の特定のコマンドを出力せず、実行結果のみを出力します。@echo off
:echo off
に基づいてコマンド自体を非表示にします。
4. 変数の定義: 設定
set
: ユーザー定義または名前付き環境変数を設定します。これはメモリに一時的に保存され、コマンドの実行後に破棄されます。
set THE_KING=Elvis
echo %THE_KING%
pause
5. ジャンプ: ジャンプ
label
: コロンを使用してラベルを設定します。これは、goto
ジャンプ位置として使用できます。
echo Start
goto end
echo I can guarantee this line will not be executed
:end
echo End
pause
pause
echo I can guarantee this line will not be executed
直接スキップされていることがわかります。
6、条件:if
-
if
:条件文exist
: ファイルが存在するかどうかをテストします%
パラメータの受信:最初のパラメータを表すパラメータと%
2番目のパラメータを表すパラメータを渡します。%1
%2
if %1 == start goto start if %1 == stop goto stop goto invalid :start echo Starting appincation goto end :stop echo Stopping application goto end :invalid echo Invalid parameter :end pause
これは、
%1
スクリプト ファイルの実行時に受け取られる最初のパラメータです。上記の場合、%1
実際には であることがわかりますstart
。
7. パラメータの変位を受け入れる: シフト
-
shift
%2
: の値を与える%1
、%3
の値を与えるなど、受信したパラメータを 1 位置後方に移動する%2
と、それを使用して%0
最初のパラメータを取得できます。//还是上面的代码,改成如下代码,效果是一样的: shift if %0 == start goto start if %0 == stop goto stop ...后面代码不变
8. 外部スクリプト ファイルを呼び出します: call
同じディレクトリに作成されたcmd2.cmd
コードは次のとおりです。
echo 这里是cmd2.cmd中的内容
再度作成しますcmdScript.cmd
。コードは次のとおりです。
chcp 65001
call cmd2.cmd
pause
ダブルクリックして実行するとcmdScript.cmd
、次のような効果が得られます。
9. 環境変数を設定します: setLocal
setLocal
: バッチ スクリプトで使用されます。環境変数への変更は、現在のバッチ スクリプトでのみ有効です。endLocal
コマンドが検出されると、バッチ ファイルの最後にある環境変数の値が元の値に復元されます。setlocal enabledelayedexpansion
上記では、イネーブル変数遅延を使用しています。
10. 新しいターミナル ウィンドウを作成します。
-
start
: 新しい Windows コンソールを開き、名前を指定します。start "My Title" echo hello pause
ダブルクリックしてスクリプト ファイルを開くと、スクリプトによってMy Title
2 という名前のウィンドウが自動的に開き、 が表示されますhello
。
11. 判決は同じ
-
==
: 文字列が同じかどうかを判定します@echo off chcp 65001 set str1=Hello set str2=World if "%str1%" == "%str2%" ( echo 字符串相同 ) else ( echo 字符串不同 ) REM 不要关闭窗口 pause
-
equ、gtr、lss
: 数値の大きさを決定する
2. 実践事例
1. 入力の受信
cmd
次のコードを含むスクリプト ファイルを作成し、ダブルクリックして実行します。
@echo off
setlocal enabledelayedexpansion
REM 提示用户输入内容
set /p userInput=please input:
REM 打印用户输入的内容
echo you input is: !userInput!
endlocal
REM 不要关闭窗口
pause
実行後の効果は以下の通りです。
:
インターフェイス上のプロンプト テキストはyou input is:
中国語では使用できないことに注意してください。中国語でないと、次のエラーが報告されますXXX: is not recognized as an internal or external command,operable program or batch file.
。中国語を使用する場合は、echo
次の変数を使用する必要があり%变量名%
、使用できません!变量名!
。
2. 自動シャットダウン
ファイルを作成し定时关机.cmd
、次の内容を入力します。
@echo off
chcp 65001
setlocal enabledelayedexpansion
:start
set /p second=请输入倒计时时长(秒):
set S=!second!
if %S% lss 30 (
echo 您设定的时间太短,请重新设置(请务必超过30s)
goto start
) else (
echo.
echo 将在 【%S%秒】 后为您关机,请检查以下事项:
echo - 文件+代码是否都已保存和提交?
echo - 任务和周报是否都已填报?
echo.
goto sure
)
:sure
set /p sure=确定关机[y/n]:
echo !sure!
if "!sure!"=="y" (
goto launch
)
goto end
:launch
timeout /t %S%
shutdown /s /f /t 0
goto end
:end
endlocal
REM 不要关闭窗口
pause
このスクリプトは、まずコマンド ライン ウィンドウ ( @echo off
) のエコーをオフにし、次にメッセージを表示し、30 秒間待機し (待機時間は必要に応じて調整できます)、最後にシャットダウン コマンドを実行します。
-
chcp 65001
:中国語の文字エンコーディングを設定します(中国語の文字化けを防ぐため) -
shutdown
:shutdown
シャットダウン操作を実行するコマンドです。 -
/s
: このパラメータはshutdown
コマンドにシャットダウン操作を実行するように指示します。 -
/f
: このパラメータは、すべてのアプリケーションを応答を待たずに強制的に終了します。 -
/t 0
: このパラメータは、待機せずにすぐにシャットダウン操作を実行することを意味します。 -
pause
: ユーザーがいずれかのキーを押すまで待ってから閉じます。 -
setlocal enabledelayedexpansion
: 可変遅延をオンにします -
endlocal
: クローズ可変遅延、とsetlocal enabledelayedexpansion
ペアで表示されます。 -
echo.
: 空白行を印刷します
実行後、cmd ウィンドウが自動的にポップアップ表示されます (スペースバーでターミナルをカウントダウンできます)。
3. デジタル入力を受信し、サイズを比較します
スクリプトのコードは次のとおりです。
@echo off
chcp 65001
setlocal enabledelayedexpansion
set /p n1=num1:
set /p n2=num2:
set num1=!n1!
set num2=!n2!
if %num1% equ %num2% (
echo num1和num2相同
) else if %num1% gtr %num2% (
echo num1大于num2
) else if %num1% lss %num2% (
echo num1小于num2
)
endlocal
REM 不要关闭窗口
pause
4. フロントエンドプロジェクトスクリプトを開始します。
@echo off
chcp 65001
setlocal enabledelayedexpansion
set projectName=项目名称
set projectPath=D:\Codes\project1
REM 提示用户输入内容
set /p env=即将启动【%projectName%】,请指定环境[test/prod]:
REM 打印用户输入的内容
echo Running...:%projectName%[!env!]
set ENV=!env!
cd /d %projectPath%
if (%ENV%)==() (
goto empty
) else if "%ENV%"=="test" (
goto env
) else (
goto env
)
:empty
echo 正在启动dev环境...
pnpm start
goto end
:env
echo 正在启动%ENV%环境...
pnpm start:%ENV%
goto end
:end
endlocal
REM 不要关闭窗口
pause
set /p env=即将启动【产品中心】,请指定环境[test/prod]:
: 入力を受け取り、受け取り変数 env を定義しますset ENV=!env!
: 入力をENV
変数に代入cd /d D:\Codes\Product-Center
: ドライブ D に切り替えて、指定したプロジェクト ディレクトリに入ります。if... else... if else...
: どの環境を開始するかを決定しますgoto
:指定したコード位置にジャンプします。if (%ENV%)==()
: 入力テキストが空かどうかを判断します。このメソッドは必須です。==
実際のテストは無効です。
実行効果は以下の通りです。