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

このエラーが発生する理由について何か提案はありますか?

「コピー」はWindowsの実行可能ファイルではなく、コマンドインタープリターcmd.exeのコマンドです。同等のものは、Filename = "cmd.exe"、Arguments = "/ c copy" + string.Format(...)になります。コマンドウィンドウや生成されるお粗末なエラーレポートにはおそらく満足できないでしょう。代わりにFile.Copy()を検討してください。

また、「@」を使用すると、「\」ではなく「\\」が表示されるのはなぜですか?

これはデバッガーのアーティファクトです。コードで@を使用したかどうかがわからないため、安全側でエラーが発生し、文字列が通常のC#文字列リテラルとして表示されます。テキストビジュアライザーを使用して文字列をそのまま表示し、スパイグラスアイコンをクリックします。

于 2013-01-03T08:41:56.480 に答える