none
請問一下call cmd.exe的問題 RRS feed

  • 問題

  • 想請問一下當我呼叫起一個cmd.exe,如何能夠寫程式輸入我要的指令後並自動寫按下enter讓他執行該指令,因為我現在碰到一個問題就是當我call一個batch檔後,會執行某個指令,但是執行到一半時要我輸入密碼,這時我必須手動去打,看了一下MSDN使用streamwriter,

                Process p = new Process();
                p.StartInfo.FileName = @"store.bat";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.CreateNoWindow = false;
                p.StartInfo.RedirectStandardInput = true;
                p.Start();

     

               StreamWriter myStreamWriter = p.StandardInput;
               myStreamWriter.WriteLine("test");
               myStreamWriter.Close();
    但是沒有輸入成功...不知道是哪邊需要改進?

    2006年8月22日 上午 03:42

解答

  • 你的Batch檔案要接入參數,下面這一段是我用Batch呼叫dtsrun帶入參數的作法,這樣就可以自動執行了
    dtsrun /F %1 /N MAIIIAutoCreateDB /A BeginDate:8=%2 /A EndDate:8=%3 /A SrcUDLPath:8=%4 /A DestUDLPath:8=%5

    Process物件中執行Batch的方法如下,
    mProcess.StartInfo.FileName = nInstallPath+"AutoCreateDB.bat";
    mProcess.StartInfo.Arguments = string.Format("\"{0}MAIIIAutoCreateDB.dts\" {1} {2} \"{0}MAIIISource.udl\" \"{0}MAIIIDestination.udl\" > DTS_{3}_{4}.txt",nInstallPath,ndb.BeginDate.ToString("yyyy/MM/dd"),ndb.EndDate.ToString("yyyy/MM/dd"),ndb.DBName,DateTime.Now.ToString("yyyyMMddHHmmss"));
    mProcess.Start();

    希望對你有幫助

    2006年8月31日 上午 01:48

所有回覆

  • 補充一下我想要做的就是呼叫一個cmd.exe後在上面打指令,但是是用程式去寫的.....不知道有沒有大大知道的...
    2006年8月26日 上午 03:53
  • 你的Batch檔案要接入參數,下面這一段是我用Batch呼叫dtsrun帶入參數的作法,這樣就可以自動執行了
    dtsrun /F %1 /N MAIIIAutoCreateDB /A BeginDate:8=%2 /A EndDate:8=%3 /A SrcUDLPath:8=%4 /A DestUDLPath:8=%5

    Process物件中執行Batch的方法如下,
    mProcess.StartInfo.FileName = nInstallPath+"AutoCreateDB.bat";
    mProcess.StartInfo.Arguments = string.Format("\"{0}MAIIIAutoCreateDB.dts\" {1} {2} \"{0}MAIIISource.udl\" \"{0}MAIIIDestination.udl\" > DTS_{3}_{4}.txt",nInstallPath,ndb.BeginDate.ToString("yyyy/MM/dd"),ndb.EndDate.ToString("yyyy/MM/dd"),ndb.DBName,DateTime.Now.ToString("yyyyMMddHHmmss"));
    mProcess.Start();

    希望對你有幫助

    2006年8月31日 上午 01:48
  • hi there

    我用sdft.bat檔再c:\下執行

    c:\>sdft      infile值    ofile值   可執行

    但p.StartInfo.Arguments = string.Format("c:\\>sdft %1 %2",infile , ofile); 不行...請問語法有錯嗎?? 沒有作用!!

    若呼叫bat檔 , 傳變數進去該怎麼寫??

    p.StartInfo.Arguments = @"/c ""C:\SDFt.Bat infile  ofile "; 我用這樣不行

    麻煩達人們解惑, 謝謝!!

    2006年11月24日 上午 08:30
  • Arguments的設法是沒有問題的

    試試將startInfo.WorkingDirectory設為C:\

    2006年11月28日 上午 03:36