C# 在此目录下执行批处理文件
我在我的c#表单项目中使用了这段代码。我还发现exp.bat文件包含shell命令,如下所示。 但无论我做什么,它都不会在工作目录中创建.txt文件C# 在此目录下执行批处理文件,c#,batch-file,process,processstartinfo,C#,Batch File,Process,Processstartinfo,我在我的c#表单项目中使用了这段代码。我还发现exp.bat文件包含shell命令,如下所示。 但无论我做什么,它都不会在工作目录中创建.txt文件 @echo off echo "hello" > test.txt path = @"C:\Users\abc\Desktop\exp.bat"; startingPath = @"C:\Users\abc\Desktop\"; bool success = false; try { System.Diagnostics.Proce
@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();}
最初通过在评论中使用发布
发布与原样相同的答案,因此此问题不计入未回答问题,问题作者还在评论中确认,作者的答案是正确的,并且有帮助
我觉得有足够的背景,这里是评论作为答案
在C#代码中,使用该方法获取预定义的Windows环境变量USERPROFILE的字符串值,以在C#应用程序中动态构建exp.bat和启动目录的路径。或者最好直接获取当前用户的桌面文件夹,请参见–2月22日12:25
通过将以下命令添加到bat文件的开头,可以轻松实现这一点
%~d0
cd %~dp0
这样,你处理错误的方式不会显示出任何东西。您可能遇到错误(我假设“访问被拒绝”),并且您没有收到任何信息。见鬼,试着以管理员的身份运行VS。@Renato,我以管理员的身份尝试过,但没有任何改变。@Mofi,我没有机会,因为我不能改变,在真实的bat文件中排列或任何内容。使用
%USERPROFILE%\Desktop\exp.bat
而不是C:\Users\abc\Desktop\exp.bat
引用当前用户帐户的桌面文件夹中的批处理文件exp.bat
,而不依赖于用户帐户的名称和存储位置。请参阅Wikipedia文章about,了解预定义环境变量的列表及其说明。另外,请看一下C#code中使用该方法获取预定义Windows环境变量USERPROFILE
的字符串值,为exp.bat
构建路径,并在C#应用程序中动态启动目录。或者最好直接获取当前用户的桌面文件夹,请参见