【问题标题】:Files not running from the directory chosen未从所选目录运行的文件
【发布时间】:2021-11-27 02:24:40
【问题描述】:

我运行我的程序,它运行良好。我正在使用外部批处理和 VBS 文件但是如果这些文件不在我的主 C:\ 目录中,那么它根本不起作用!我得到一个找不到指定的文件,所以如何我可以确保我的文件在我的程序每次安装的目录中运行 C:\Program Files (x86) \ 然后它当然会创建一个程序文件夹。

我使用的代码示例来自本网站的另一个论坛。

Process scriptProc = new Process();
            scriptProc.StartInfo.FileName = @"Services.bat";
            scriptProc.StartInfo.WorkingDirectory = @"c:\Program Files (x86)\Buzzard X Soy Optimzation Program\"; //<---very important 
            scriptProc.StartInfo.Arguments = "//B //Nologo Services.bat";
            scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
            scriptProc.Start();
            scriptProc.WaitForExit();
            scriptProc.Close();

【问题讨论】:

  • 您是直接从C:\&gt; 运行代码吗?如果是这样,那么这就是scriptProc.StartInfo.FileName 正在寻找的地方,而不是其他目录
  • 不,那只是出于某种原因它在哪里工作
  • 你是如何运行代码的呢?来自 CMD?
  • 嗯是和否按钮是在 VS 中编译的,但批处理文件通过 CMD 运行是的。但由于某种原因,它只有在文件直接位于 C: 和 C: 时才有效:只有没有子文件夹我也是代码和 C# 的新手。

标签: c# windows visual-studio


【解决方案1】:

您可以使用Environment.CurrentDirectory 获取运行您的可执行文件的目录,并使用navigate to the desired folder 相对于您的起始路径。

由于您遇到的确切问题,您实际上不应该在代码中放置绝对路径。

【讨论】:

  • 如果您不介意,我可以举个例子吗?以及如何应用它?我是 C# 新手
  • @Buzzard 当然。如果您给我一些输入,我可以向您展示如何使用您的代码来执行此操作。在您编写的代码的正上方写下这个var path = Environment.CurrentDirectory。在那之后放一个断点,让我知道路径是什么。
  • 我这样做了,你想让我运行它吗?
  • 它似乎可能确实有效.. 让我构建它 rq 如果它确实有效,但非常感谢
  • @Buzzard 欢迎您。如果我的回答为您解决了问题,请点赞并将其选为最佳答案
猜你喜欢
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多