0

私はしばらく見回しましたが、私が持っている質問に関する有望な記事はあまり見つかりませんでした.

openFileDialog を使用してファイルへのパスをユーザーに照会し、出力を C# の文字列に保存するプログラムを作成しようとしています。私がそれでやりたいことは、私が書いているプログラムで使用するためにファイルをコンピューターの別の部分にコピーするコマンドスクリプトで上記のパスを使用することです。

私はC#にかなり慣れていないので、可能であればダミーバージョンをいただければ幸いです。これまでのところ、一般的にバッチ コマンドを実行するには新しいプロセスを設定する必要があることは理解していますが、C# 文字列をバッチ スクリプトに渡す方法の良い例を見つけることができませんでした。

ありがとう

4

3 に答える 3

2

.NET の組み込みのCopyメソッドを使用しないのはなぜですか? バックグラウンドワーカーまたはタスクを使用して、これを別のスレッドでも実行できます。

別のプロセスをスピンアップする必要がある場合は、Process.Startを使用して ProcessInfo をパスに設定し、その方法で引数を渡すことができます。

于 2012-04-27T21:18:50.150 に答える
0

スクリプトが長い場合は、を使用しStringBuilderて、文字列をファイルに書き込みます。

// set srcFilename and xcopyOptions (like /Y, for example)

var sb = new StringBuilder();
sb.Append( "XCOPY " )
  .Append( xcopyOptions )
  .Append( " " )
  .Append( srcFilename )
  .Append( " " )
  .AppendLine( dstDir );

// repeat for as many copy commands as you want
// ...

File.WriteAllText( scriptFilename, sb.ToString() );
于 2012-04-27T21:26:34.363 に答える
0

すでに利用可能な投稿に加えて、本当にバッチを使用したい場合、変数を渡すことは、実行可能ファイルに引数を渡すのと同じです。

  • インスタンス process 、「ececutable」はバッチ ファイルです。
  • 引数を割り当てます。これは、パラメーターのようにバッチの変数に渡されます。

    プロセス thisProcess = new Process(); thisProcess.StartInfo.CreateNoWindow = true; //
    ウィンドウは必要ありません thisProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    thisProcess.StartInfo.WorkingDirectory = @"DirectoryOfTheBacth";
    thisProcess.StartInfo.FileName = "バッチファイル名";
    thisProcess.StartInfo.Arguments = "パラメータ";
    thisProcess.StartInfo.UseShellExecute = false; // NO SHELL EXECUTE
    thisProcess.StartInfo.RedirectStandardOutput = true; //STDOリダイレクト、何が起こっているのかを読み取ることが
    できます thisProcess.Start(); // 最後に、プロセスを開始します

C#からバッチファイルにパラメータを渡す方法は?

于 2012-04-27T21:26:53.343 に答える