1. ホーム
  2. windows

[解決済み] Windowsのバッチファイルで複数のコマンドを1行で実行する

2022-05-17 06:10:04

質問

Unixでは、次のように複数のコマンドを1行に書くことができます。

$ date ; ls -l ; date

Windowsで同じようなことをやってみました。

 > echo %TIME% ; dir ; echo %TIME

しかし、時間を表示して、コマンドを実行しません。 dir .

どうすれば実現できるのでしょうか?

どのように解決するのですか?

使用します。

echo %time% & dir & echo %time%

これは、記憶では、セミコロンで区切られた bash といったUNIX系シェルでのセミコロンセパレータに相当します。

また && (または || ) は、最初のコマンドが成功 (または失敗) した場合にのみ、2 番目のコマンドを実行しますが、シングルアンパサンドの & はここで探しているものです。


環境変数は実行時ではなく、読み込み時に評価される傾向があるため、この方法でも同じ時間がかかる可能性があります。

遅延展開を有効にすることで、これを回避することができます。

pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85

これはコマンドラインから必要です。もし、スクリプトの中でこれを行うのであれば、単に setlocal :

@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal