2016-04-13 24 views
0

私はバッチファイルをプロジェクト#からC#で実行しようとしています。私もそれを実行するたびに、私はエラーを取得する:/tが内部コマンドまたは外部コマンドとして認識されません。 C#バッチスクリプト

/t is not recognized as an internal or external command. 

EDIT:このバッチファイルの私のC#プロジェクトの完全に罰金外を実行します。

バッチファイル自体を必要とせずにアプリケーション内からバッチファイルを実行したいと思います。私はそれがおそらく望ましいだろうが、私のプロジェクトの作業ディレクトリからバッチファイルを実行する方法を理解することはできないので、これは私にとって次善のものです。ここで

が私のコードである(注、私はたSystem.Diagnosticsは私のプロジェクトに追加した):

private void button1_Click(object sender, EventArgs e) 
     { 
      string batTest; 
      batTest = @" 
       @ECHO CHEF WORKSTATION FIX 
       @ECHO VERSION: 1.00.041316 
       @ECHO. 
       @ECHO THIS WILL DELETE THE CONTENTS OF 'c:\chef' 
       @ECHO. 
       @ECHO ARE YOU SURE YOU WANT TO CONTINUE ? 
       @PAUSE 
       @set folder='C:\chef' 
       @IF EXIST '%folder%' (
        cd /d %folder% 
        for /F 'delims=' %%i in ('dir /b') do (rmdir '%%i' /s/q || del '%%i' /s) 
       ) 
       @ECHO. 
       @ECHO DELETED CONTENTS OF 'c:\chef' 
       @PAUSE 
       @ECHO. 
       @ECHO UPDATE GROUP POLICIES ? 
       @PAUSE 
       @GPUPDATE /FORCE 
       @ECHO. 
       @ECHO REBOOT COMPUTER TO COMPLETE FIX ? 
       @PAUSE 
       @shutdown.exe /r /t 00 
      "; 
      Process.Start(@"cmd.exe", batTest); 
     } 
+0

これはタグ付けしないでください。これはバッチファイルに関するものです。 C#は余計です。 –

+5

@roryapどうして... 'Process.Start'は、現在のコンテキスト内では明らかに有効なC#コード/関数呼び出しです。個人的には、内容をバッチファイルに入れて文字列を作成し、バッチファイルを実行しようとしますPorcess.Start – MethodMan

+1

エラーはバッチファイルの '/ t'に関連しているためです。バッチファイルをC#コードから取り出して実行すると、同じ問題が発生します。 VBS、VB.NET、地獄、別のバッチファイルから、それを(それをダブルクリックすることによって)独自に実行することができます。 C#は余分な情報です。 –

答えて

1

この小さなコンソールプログラムが(コメントで説明したように)のラインを書くためにStreamWriter.WriteLineメソッドを使用していますバッチファイルを%temp%フォルダのテキストファイルにコピーします。その後、バッチスクリプトを実行し、終了したらバッチスクリプトを削除します。

using System.IO; 
using System.Diagnostics; 

namespace CreateAndRunBatchFile 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string batTest = System.Environment.GetEnvironmentVariable("TEMP") + 
       @"\batchfile.bat"; 
      using (StreamWriter sw = new StreamWriter(batTest)) 
      {     
       sw.WriteLine("@echo off"); 
       sw.WriteLine("echo Batch program has started..."); 
       sw.WriteLine("REM Add your lines of batch script code like this"); 
       sw.WriteLine("pause"); 
       sw.WriteLine("exit"); 
      } 
      Process.Start(@"cmd.exe ", "/c " + batTest); 
      Process.Start(@"cmd.exe ", "/c del " + batTest); 
     } 
    } 
} 
+0

これは完全に機能しました!ありがとうございました! – dbrree

関連する問題