いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Task (go-task) メモ-29 (Windows上でコマンドを実行する場合のやり方)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

これまでの Task に関する記事は上の関連記事をご参照ください。

TaskをWindowsで使っている場合、コマンドの実行する際にちょっと注意が必要です。

Windows上でコマンドを実行する場合は

cmd /c "コマンド"

という形で実行します。普通に rd /s /q .task とかで指定すると

rdコマンドが見つからないというエラーになります。

サンプル

以下のようなタスクファイルがあるとします。

# https://taskfile.dev

version: '3'

tasks:
  default:
    cmds:
      - task: run
  build:
    cmds:
      - go build -o app{{exeExt}}
    sources:
      - ./*.go
    generates:
      - app{{exeExt}}
    method: timestamp
  run:
    deps:
      - build
    cmds:
      - ./app{{exeExt}}
  clean:
    cmds:
      - cmd /c "del /F /Q app{{exeExt}}"
      - cmd /c "rd /s /q .task"
    ignore_error: true

実行すると以下のようになります。

$ task
task: [build] go build -o app.exe
task: [run] ./app.exe
0:helloworld
1:helloworld
2:helloworld
3:helloworld
4:helloworld


$ task
task: Task "build" is up to date
task: [run] ./app.exe
0:helloworld
1:helloworld
2:helloworld
3:helloworld
4:helloworld

$ task clean
task: [clean] cmd /c "del /F /Q app.exe"
task: [clean] cmd /c "rd /s /q .task"


$ task
task: [build] go build -o app.exe
task: [run] ./app.exe
0:helloworld
1:helloworld
2:helloworld
3:helloworld
4:helloworld

cleanタスクを実行した際にちゃんと実行できていますね。

これを cmd /c 付けないように変更してみます。

  clean:
    cmds:
      - del /F /Q app{{exeExt}}
      - rd /s /q .task
    ignore_error: true

んで、実行してみると

$ task clean
task: [clean] del /F /Q app.exe
"del": executable file not found in $PATH
task: [clean] rd /s /q .task
"rd": executable file not found in $PATH

コマンドが見つからないというエラーになります。

参考情報

taskfile.dev

github.com

engineer.retty.me

zenn.dev

zenn.dev


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。