.CMD在C#中的执行无法解释地失败
我正试图从一个C#程序执行一个.cmd进程。当我在命令行中运行进程时,即.CMD在C#中的执行无法解释地失败,c#,command-line,process,C#,Command Line,Process,我正试图从一个C#程序执行一个.cmd进程。当我在命令行中运行进程时,即 C:\Directory\Process.cmd -x 1000 -y 1000 C:\Input\input.txt 我得到了一个适当的结果(在本例中,这意味着进程将文件写入: C:\Output\output.txt 但是,当我尝试从一个简单的C#程序运行这个过程时,输出文件并没有被创建 尝试1) 尝试2) 现在,在这两种情况下,都不会抛出异常,并且会访问Process.cmd(它在shell中打印状态更新),但
C:\Directory\Process.cmd -x 1000 -y 1000 C:\Input\input.txt
我得到了一个适当的结果(在本例中,这意味着进程将文件写入:
C:\Output\output.txt
但是,当我尝试从一个简单的C#程序运行这个过程时,输出文件并没有被创建
尝试1)
尝试2)
现在,在这两种情况下,都不会抛出异常,并且会访问Process.cmd(它在shell中打印状态更新),但该进程不会创建任何输出文件。我试图调用Process.cmd的方式是否有问题?直接从命令行运行时,它工作正常,但尝试从C#程序调用时,它工作不正常?文件可能正在创建,但不是您认为的位置。使用
prs.StartInfo.WorkingDirectory = "yourpath"
如果用户名和密码为空,则必须设置WorkingDirectory属性
假如如果未设置属性,则默认工作目录为
%SYSTEMROOT%\system32
如果目录已经是系统路径变量的一部分,则执行以下操作
不必在此属性中重复目录的位置
UseShellExecute时WorkingDirectory属性的行为不同
比UseShellExecute为false时为true。当UseShellExecute是
如果为true,WorkingDirectory属性指定
可执行文件。如果WorkingDirectory为空字符串,则当前
目录被理解为包含可执行文件
当UseShellExecute为false时,WorkingDirectory属性不为false
用于查找可执行文件。相反,它被
已启动,并且仅在新流程的上下文中具有意义
我在意识到路径是作为参数传入的之后删除了它,并且可能对它写入的文件使用了硬编码的路径逻辑,但是由于注释引用了它,我将取消删除,以防它仍然有帮助。文件可能正在创建,但不是您认为的位置。使用
prs.StartInfo.WorkingDirectory = "yourpath"
如果用户名和密码为空,则必须设置WorkingDirectory属性
假如如果未设置属性,则默认工作目录为
%SYSTEMROOT%\system32
如果目录已经是系统路径变量的一部分,则执行以下操作
不必在此属性中重复目录的位置
UseShellExecute时WorkingDirectory属性的行为不同
比UseShellExecute为false时为true。当UseShellExecute是
如果为true,WorkingDirectory属性指定
可执行文件。如果WorkingDirectory为空字符串,则当前
目录被理解为包含可执行文件
当UseShellExecute为false时,WorkingDirectory属性不为false
用于查找可执行文件。相反,它被
已启动,并且仅在新流程的上下文中具有意义
我在意识到路径是作为参数传入的之后删除了它,并且可能对它写入的文件使用了硬编码的路径逻辑,但是由于注释引用了它,我将取消删除,以防它仍然有帮助。
System.Diagnostics.Process.Start("cmd.exe", @"/c C:\Directory\Process.cmd -x 1000 -y 1000 C:\Input\input.txt");
好的,“@”在逐字字符串前面加上前缀,不需要反斜杠屏蔽)这一个
System.Diagnostics.Process.Start("cmd.exe", @"/c C:\Directory\Process.cmd -x 1000 -y 1000 C:\Input\input.txt");
好了,“@”预先输入逐字字符串,这不需要反斜杠屏蔽)因此我终于能够掌握源代码,并意识到问题出在java代码中。。。它将项目目录解释为输出目录。谢谢你们的帮助,你们提供了一些非常有用的信息 因此,我终于能够掌握源代码,并意识到问题出在java代码中。。。它将项目目录解释为输出目录。谢谢你们的帮助,你们提供了一些非常有用的信息 你能发布process.cmd内容吗?很遗憾我不能(我没有访问权限)。我知道process.cmd调用了一个Java应用程序来处理数据并生成输出。这个过程是否需要管理员权限来执行和写入输出?您是否已检查C#程序是否以正确的权限运行?如果正在运行批处理文件,UseShellExecute是否应为true?您是否可以发布生成
Output.txt
的代码?您是否可以发布process.cmd内容?很遗憾,我无法(我没有访问权限)。我知道process.cmd调用了一个Java应用程序来处理数据并生成输出。这个过程是否需要管理员权限来执行和写入输出?您是否已检查C程序是否以正确的权限运行?如果您正在运行批处理文件,UseShellExecute是否应为true?您是否可以发布生成Output.txt
的代码?