2016-04-13 27 views
0

C# dosyasında bir toplu iş dosyasını projenin kendisinden çalıştırmaya çalışıyorum. Gerçi çalıştırmak zaman, ben hata alıyorum:/t, iç veya dış komut olarak tanınmıyor. C# toplu iş komut dosyası

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

EDIT: Bu toplu iş dosyası benim C# projesi mükemmel ince dışında çalışır.

Toplu iş dosyalarına gerek kalmadan, uygulama içerisindeki toplu dosyaları çalıştırmak istiyorum. Bunun muhtemelen tercih edileceğini biliyorum, ama projemin çalışma dizininden toplu dosyaları nasıl çalıştıracağımı anlayamıyorum, bu benim için en iyi şey.

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

Bu, C# olarak etiketlenmemelidir. Bu sadece toplu iş dosyasıyla ilgili. C# gereksizdir. –

+5

@roryap neden olmasın .. 'Process.Start 'geçerli bağlamda açıkça C# kodu/işlev çağrısıdır. Şahsen ben bir dizi oluşturarak bir toplu iş dosyası içine koymak ve toplu iş dosyasını yürütmek için deneyin Porcess.Start – MethodMan

+1

Hata, toplu iş dosyasında '/ t' ile ilgili olduğundan. Toplu iş dosyasını C# kodundan çıkarırsanız ve çalıştırırsanız, aynı sorun olur. VBS, VB.NET, cehennemden, başka bir toplu iş dosyasından (çift tıklayarak) kendi başına çalıştırabilirsiniz. C# gereksiz bilgi. –

cevap

1

(yorumlarla ele alındığı gibi) Bu küçük konsol programı hatlarını yazmaya StreamWriter.WriteLine yöntemini kullanır: Burada

benim kodu (Ben system.diagnostics projemde eklenen var unutmayın) %temp% klasöründeki bir metin dosyasına toplu iş dosyası. Daha sonra toplu iş komut dosyasını yürütür ve tamamlandığında siler.

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

Bu mükemmel çalıştı! Teşekkür ederim! – dbrree