【问题标题】:C# Code Switching from Absolute to Relative Paths During Scheduled Task在计划任务期间从绝对路径切换到相对路径的 C# 代码
【发布时间】:2017-03-20 12:20:12
【问题描述】:

我有一些使用绝对路径来识别文件位置的 C# 代码。当我调试代码时,路径仍然是绝对的(使用 Console.WriteLine 确认)。当代码从 Windows 任务计划程序启动时(在触发时),路径显示为相对路径(再次由 Console.WriteLine 确认)。但是,如果我尝试直接运行代码(使用 compiles exe 或从任务计划程序启动),路径将再次显示为绝对路径!

我是这样称呼路径的:

string path = Directory.GetCurrentDirectory();
string strSCPath = path + @"\Scorecards";
string filePath = strSCPath + @"\" + file + ".txt";

以及我如何验证相对/绝对条件:

Console.WriteLine("Filepath defined as: {0}", filePath");

当我使用任务计划程序运行时:

Filepath defined as .\Scorecards\file.txt

但是手动运行:

Filepath defined as D:\Users\Files\Scorecards\file.txt

我的代码或任务计划程序本身是否有设置我未能正确设置会导致上述情况?

【问题讨论】:

  • 请提供minimal reproducible example。另请参阅How to Ask
  • “我有一些 C# 代码”。你真的需要分享这个问题中的代码......
  • 如果你是从当前目录开始,你有没有确保当前目录在启动时设置正确?跨度>
  • 是的 - 我确保任务计划程序中的“开始于”字段是 D:\Users\Files”。此外 - 我可以从任务计划程序手动启动而无需切换到相对路径- 似乎表明代码应该按设计工作......我想知道这是否是 Windows 问题......
  • 任务是否以您正在测试的同一用户身份运行?

标签: c# scheduled-tasks relative-path absolute-path


【解决方案1】:

这有什么输出?它应该告诉你相对路径解析到哪里。

DirectoryInfo di = new DirectoryInfo(Path.Combine(path, "Scorecards"));
Console.WriteLine("Directory defined as: {0}", di.FullName);

【讨论】:

    【解决方案2】:

    此问题已解决 - 似乎另一个编码员在显示后修改了我的代码,将路径调用返回到相对路径。经过彻底的折腾,我们回到了基本代码。

    仍然不确定为什么代码会有所不同,但我正在结束这个问题......

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2018-01-22
      • 1970-01-01
      相关资源
      最近更新 更多