1

我有打印*.prn文件的问题。这是代码:

Process process1 = new Process();
process1.StartInfo.FileName = "copy";
process1.StartInfo.Arguments = string.Format(@" /b C:/test/test.prn \\127.0.0.1\{0}",
                                                         SelectPrinterForm.selectedLine);
process1.Start();

SelectPrinterForm.selectedLine我有选择的打印机的名称。我的Start()方法有错误,信息找不到文件

编辑(添加堆栈跟踪):

w System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
w System.Diagnostics.Process.Start()

问题:

任何建议为什么我有这个错误?
另外为什么当我使用“@”时我仍然有"\\\\"而不是"\\"

汉斯·帕桑特的帮助解决方案和他上面的回答

Process process1 = new Process();
string computerFullName = Program.GetFQDN();
process1.StartInfo.FileName = "cmd.exe";
process1.StartInfo.Arguments = string.Format(@" /c copy /B C:\test\test.prn \\{0}\{1}",
                                                     computerFullName,
                                                     SelectPrinterForm.selectedLine);
process1.Start();
4

1 回答 1

3

任何建议为什么我有这个错误?

“copy”在 Windows 中不是可执行文件,它是命令解释器cmd.exe 的命令。等效为 Filename = "cmd.exe", Arguments = "/c copy" + string.Format(...)。您可能不会对命令窗口或产生的糟糕错误报告感到满意,请考虑使用 File.Copy()。

还有为什么当我使用 "@" 时我仍然有 "\\" 而不是 "\" ?

这是一个调试器工件,它不知道您是否在代码中使用了@,因此在安全方面会出错,并将字符串显示为常规 C# 字符串文字。使用文本可视化器按原样查看字符串,单击望远镜图标。

于 2013-01-03T08:41:56.480 回答