在此目录执行批处理文件

33 浏览
0 Comments

在此目录执行批处理文件

我有一个代码片段,用于我的C#表单项目。我还有一个包含以下shell命令的exp.bat文件。\n但无论我做什么,它都不会在工作目录下创建.txt文件。\n

@echo off
echo "hello" > test.txt
path = @"‪C:\Users\abc\Desktop\exp.bat";
startingPath = @"C:\Users\abc\Desktop\";
bool success = false;
try
{
    System.Diagnostics.ProcessStartInfo ProcStartInfo = new 
    System.Diagnostics.ProcessStartInfo("cmd");
    ProcStartInfo.RedirectStandardOutput = true;
    ProcStartInfo.UseShellExecute = false;
    ProcStartInfo.CreateNoWindow = false;
    ProcStartInfo.RedirectStandardError = true;
    System.Diagnostics.Process MyProcess = new System.Diagnostics.Process();
    ProcStartInfo.Arguments = "/c start /wait"+path;
    ProcStartInfo.WorkingDirectory = startingPath;
    MyProcess.StartInfo = ProcStartInfo;
    success = MyProcess.Start();
    MyProcess.WaitForExit();
}
catch (Exception ex) { string s = ex.StackTrace.ToString();}

0
0 Comments

在执行批处理文件时,出现了(Executing Batch File At This Directory)这个问题。为了解决这个问题,可以在批处理文件的开头添加以下命令:

 %~d0
 cd %~dp0

这些命令的作用是获取当前批处理文件所在的驱动器和路径,并将当前目录切换到批处理文件所在的目录。

通过添加这些命令,批处理文件将在正确的目录中执行,而不会出现路径错误的问题。这对于需要在特定目录中执行操作的批处理文件非常有用。

只需将以上命令添加到批处理文件的开头,即可解决(Executing Batch File At This Directory)问题。这样批处理文件将始终在正确的目录中执行,无论它在哪个位置运行。

0
0 Comments

在这个问题中,问题的原因是在批处理文件中执行时出现了路径错误。解决方法是使用C#代码中的Environment.GetEnvironmentVariable方法来获取预定义的Windows环境变量USERPROFILE的字符串值,以便在C#应用程序中动态构建exp.bat和起始目录的路径。或者更好的方法是直接获取当前用户的桌面文件夹路径,可以参考How to get a path to the desktop for the current user in C#?这个问题的回答。

0