CMDスクリプト実践チュートリアル

.batWindows 11 でカスタム シャットダウン CMD スクリプト ファイルを作成するには、拡張子またはを付けたテキスト ファイルを作成し、.cmdそのファイルにスクリプトを記述します。

1. よく使われる文法

1.メモ:レム

rem 这里是注释

2.一時停止:一時停止

pause: 実行中のバッチ ファイルを一時停止し、実行を続行するためにキーを押すようにユーザーに求めます。

rem cmd脚本文件代码
pause

画像-20230922151349814

3. テキストの印刷: エコー

echo: テキストを印刷する

  • echo %os%: オペレーティング システム名を表示します。
  • echo off:バッチファイル内の特定のコマンドを出力せず、実行結果のみを出力します。
  • @echo off:echo offに基づいてコマンド自体を非表示にします。

画像-20230922152124282

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

画像-20230922152526004

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
    

    画像-20230922155958313

    これは、%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、次のような効果が得られます。

画像-20230922160829535

9. 環境変数を設定します: setLocal

  • setLocal: バッチ スクリプトで使用されます。環境変数への変更は、現在のバッチ スクリプトでのみ有効です。endLocalコマンドが検出されると、バッチ ファイルの最後にある環境変数の値が元の値に復元されます。setlocal enabledelayedexpansion上記では、イネーブル変数遅延を使用しています。

10. 新しいターミナル ウィンドウを作成します。

  • start: 新しい Windows コンソールを開き、名前を指定します。

    start "My Title" echo hello 
    pause
    

    画像-20230922161459378

ダブルクリックしてスクリプト ファイルを開くと、スクリプトによってMy Title2 という名前のウィンドウが自動的に開き、 が表示されますhello

11. 判決は同じ

  • ==: 文字列が同じかどうかを判定します

    @echo off
    chcp 65001
    
    set str1=Hello
    set str2=World
    
    if "%str1%" == "%str2%" (
        echo 字符串相同
    ) else (
        echo 字符串不同
    )
    
    REM 不要关闭窗口
    pause
    

    画像-20230922165101792

  • 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 ウィンドウが自動的にポップアップ表示されます (スペースバーでターミナルをカウントダウンできます)。

画像-20230922185455773

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

画像-20230922171049662

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%)==(): 入力テキストが空かどうかを判断します。このメソッドは必須です。==実際のテストは無効です。

実行効果は以下の通りです。

画像-20230922173055600

おすすめ

転載: blog.csdn.net/bobo789456123/article/details/133178858