WSL bashからcmd.exeを実行した際の挙動についての検証

    >


  • 最初のcdしか実行されない

cmd.exe – <<EOF
cd
cd
EOF

  • 2つとも実行される

cmd.exe – <<EOF
cd & cd
EOF

  • なぜかエラーになる

cmd.exe – <<EOF
set ATOM_HOME=C:.atoms.atom & atom
EOF

C:\Users\ifgm2>set ATOM_HOME=C:\.atoms\.atom & atom
net.js:200
    this._handle.open(options.fd);
                 ^

Error: EINVAL: invalid argument, uv_pipe_open
    at new Socket (net.js:200:18)
    at createWritableStdioStream (internal/process/stdio.js:164:16)
    at process.getStdout [as stdout] (internal/process/stdio.js:14:14)
    at console.js:246:38
    at NativeModule.compile (bootstrap_node.js:596:7)
    at Function.NativeModule.require (bootstrap_node.js:541:18)
    at setupGlobalConsole (bootstrap_node.js:310:41)
    at startup (bootstrap_node.js:70:7)
    at bootstrap_node.js:608:3
  • 最初のコマンドのみ実行される

cmd.exe – <<EOF
set ATOM_HOME=C:.atoms.atom02
atom
EOF

  • 2つとも実行される

cmd.exe /C “cd & cd”

  • 何も出力されず実行もされない

cmd.exe /C <<‘EOT’
cd
cd
EOT

  • 何も出力されず実行もされない

cmd.exe /C <<‘EOT’
set ATOM_HOME=C:.atoms.atom02
atom
EOT

  • 何も出力されず実行もされない

cmd.exe /C <<‘EOT’
set ATOM_HOME=C:.atoms.atom02 & atom
EOT

  • 2つとも実行される

cmd.exe /C ‘set ATOM_HOME=C:.atoms.atom02 & atom’


ミツモア

batchファイルの検証

cat > hoge.bat
cd
cd
  • プロンプトにログインする

cmd.exe hoge.bat

  • エラーになる(バグ)

cmd.exe /C hoge.bat

'hoge.bat' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Execute Batch file in Windows Subsystem for Linux – Stack Overflow

結論

複数のコマンドを実行したい場合は、バッチファイルやヒアドキュメントを使用せず、&で連結して記述する。 e.g. cmd.exe /C 'set ATOM_HOME=C:\.atoms\.atom02 & atom'

batch file – How do I run two commands in one line in Windows CMD? – Stack Overflow




お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu