【发布时间】:2018-08-03 09:07:44
【问题描述】:
在 cmd 中输入以下命令会起作用:
"C:\Program Files\Scripts_Talend\SynchroExo_run.bat" --context_param FileCode=ABCD --context_param FilePath="//networkname/Folder/file.xls" --context_param ReportFilePath=""
但是当我使用 ProcessStartInfo 执行它时它不起作用:
ProcessStartInfo lTalendScriptInfo = new ProcessStartInfo("cmd.exe", "/c " + lCommand)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true
};
Process lTalendScriptProcess = Process.Start(lTalendScriptInfo);
lCommand 与之前显示的命令字符串相同。由于 \,引号被正确转义。
使用 ProcessStartInfo,错误是:'C:\Program' 不是内部或外部命令、可运行程序或批处理文件 好像双引号被忽略了,第一个空格后面的部分作为参数。
cmd 和 ProcessStartInfo 的解释有区别吗?
【问题讨论】:
-
引号不会被忽略。他们根本不在那里。您的字符串不 包含 任何引号。无论如何调用都是错误的 - 您不需要需要调用
cmd.exe来运行任何可执行文件,即使它是一个批处理文件。只需使用new ProcessStartInfo("C:\Program Files\Scripts_Talend\SynchroExo_run.bat", "--context_param FileCode=ABCD --context_param FilePath="....."`
标签: c# cmd talend processstartinfo