4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

簡単にできると思っていたのにハマった「タスクスケジューラを使ったファイル出力アプリ(exe)の定期実行」

Last updated at Posted at 2024-05-16

はじめに

exeは実行日時をテキストファイルに出力するシンプルなアプリ
exeを単体で実行すると問題なくファイル出力されるが、タスクスケジューラから起動すると指定した場所にファイルが出力されなかった

ファイル出力されない
スクリーンショット 2024-05-16 12.12.40.png

ファイル出力される
スクリーンショット 2024-05-16 12.11.30.png

タスクスケジューラからの実行
スクリーンショット 2024-05-16 12.14.35.png

ファイル出力のサンプルコード

Visual Studio Codeのターミナルから以下を入力しProgram.csを少し書き換えて実行日時をテキストファイルに出力するようにした

Terminal
$ dotnet new console
Program.cs
namespace c_;
class Program
{
  static void Main(string[] args)
  {
    // Console.WriteLine("Hello, World!");

    // カレント日時をテキストファイルに出力
    string dt = DateTime.Now.ToString();
    File.AppendAllText(@"./test.txt", dt + " " + Environment.NewLine);
  }
}

環境

  • Windows Server 2022
  • .NET 8.0
  • Visual Sutdio Code

結論から

原因

Program.cs内で出力先をカレントパスに指定していたこと、且つタスクスケジューラの操作の"開始(オプジョン)(T)"を空欄にすることで
デフォルトの"C:\Windows\System32"にファイルが出力されていた

@albireo さんから教えていただきました
https://qiita.com/team-t-rex/items/ac20d585e381f2607aa3#comment-04bbe69b55259a25820f

Program.cs

Program.cs
$ dotnet new console
Program.cs
    File.AppendAllText(@"./test.txt", dt + " " + Environment.NewLine); <- ここ!

タスクスケジューラの設定

スクリーンショット 2024-05-16 15.33.49.png

解決方法1

Program.cs内のファイル出力先をフルパスに変更する

Program.cs
namespace c_;
class Program
{
  static void Main(string[] args)
  {
    // Console.WriteLine("Hello, World!");

    // カレント日時をテキストファイルに出力
    string dt = DateTime.Now.ToString();
    File.AppendAllText(@"C:/Users/Administrator/Desktop/publish/test.txt", dt + " " + Environment.NewLine); <- ここ!
  }
}

解決方法2

タスクスケジューラの操作の設定項目"開始(オプジョン)(T)"に実行するexeが格納されているフォルダのパスを指定する

開始(オプジョン)(T): C:/Users/Administrator/Desktop/publish/
スクリーンショット 2024-05-16 11.36.49.png

タスクスケジューラの各設定

今回はタスクスケジューラからのexe起動を確認するだけが目的だったので、かなりシンプルな設定にしている

全般

"ユーザーがログオンしているときのみ実行する", "ユーザーがログオンしているかどうかにかかわらず実行する"のどちらでも実行できた
後者にすると設定を変更するたびにAdministratorのパスワード入力を求められる
スクリーンショット 2024-05-16 11.40.44.png

トリガー

適当に設定
スクリーンショット 2024-05-16 11.44.46.png

操作

"プログラム/スクリプト(P)"に実行するexeのフルパス、"開始(オプジョン)(T)"に実行するexeが格納されているフォルダのパス(これを指定しないと実行されない!
スクリーンショット 2024-05-16 11.45.18.png

その他設定項目

デフォルトのまま

4
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?