2012-04-27 113 views
0

我環顧了一會兒,並沒有在我遇到的問題上找到許多有希望的文章。將C#字符串傳遞給批處理

我正在嘗試編寫一個程序,該程序將使用openFileDialog向用戶查詢文件的路徑,並將輸出保存爲C#中的字符串。我想要做的是在命令腳本中使用所述路徑,該命令腳本將文件複製到計算機的另一部分以供我正在編寫的程序使用。

我對C#來說很新,所以如果可能的話,我將不勝感激。我至今明白,我必須建立一個新的過程來運行批處理命令,但我永遠無法找到如何將C#字符串傳遞給批處理腳本的好例子。

感謝

回答

2

爲什麼不使用.NET的內置Copy方法?您也可以使用BackgroundworkerTask使其發生在不同的線程上。

如果您必須啓動一個單獨的進程,那麼您可以使用Process.Start並將ProcessInfo設置爲路徑並以此方式傳遞參數。

+0

這*可能*該腳本做得更多然後只要複製,它已經被人寫的,它的工作原理,所以重寫它是理想的非... – Tigran 2012-04-27 21:19:38

+0

我不知道有一個副本腳本。我很抱歉,我對C#非常陌生,在過去的幾天裏只經歷了一次速成課程,而且學習了各種編程知識。 – 2012-04-27 21:21:30

+0

@StephenR沒問題,這就是爲什麼我建議你直接回答你的問題。我已經爲Tigran更新了我的答案,以防萬一您必須啓動另一個進程,也是 – 2012-04-27 21:23:26

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()); 
0

除了已經上市後,如果您真的要使用批處理,通過它的變量與可執行文件的傳遞參數相同。

  • 實例過程,其中「ececutable」是一個批處理文件
  • 分配參數,這將像參數,以批料的變量被傳遞。

    Process thisProcess = new Process(); thisProcess.StartInfo.CreateNoWindow = true; //不需要窗口
    thisProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    thisProcess.StartInfo.WorkingDirectory = @「DirectoryOfTheBacth」;
    thisProcess.StartInfo.FileName =「BatchFileName」;
    thisProcess.StartInfo.Arguments =「parameters」;
    thisProcess.StartInfo.UseShellExecute = false; // NO SHELL EXECUTE
    thisProcess.StartInfo.RedirectStandardOutput = true; // STDO重定向,所以我們可以讀到什麼是正在發生的
    thisProcess.Start(); //最後,啓動過程

How to pass parameter from C# to a batch file?

相關問題