2009-05-30 86 views
12

我想用C#編寫簡單的腳本。東西我通常會使用.bat或4NT .btm文件。複製文件,解析文本,詢問用戶輸入等等。相當簡單,但在批處理文件中正確使用這些東西確實很難(例如沒有例外)。用C#編寫批處理腳本的好方法是什麼?

我熟悉命令行「腳本」封裝像AxScript,以便讓我成爲那裏的一部分。我所缺少的是簡單的文件操作框架。我希望能夠做到cd(「..」),複製(srcFile,destFile)類型的功能。

工具,我曾嘗試:

  • NANT,這是我們在構建過程中使用。不是一個好的腳本工具。瘋狂地詳細說明XML語法並添加一個簡單的函數,您必須編寫一個擴展程序集。不能內聯。

  • PowerShell。看起來不錯,但我一直無法切換到這個作爲我的主要外殼。與4NT差異太大。無論我做什麼需要從普通的命令提示符運行,並且不需要特殊的shell來運行它。 PowerShell可以用作腳本執行器嗎?

  • Perl/Python/Ruby。真的很討厭學習一種全新的語言和框架來做批處理文件操作。一直沒有能夠奉獻我需要這樣做的時間。另外,我們是一個99%的.NET工具鏈商店,我真的想要利用我們現有的經驗和代碼庫。

是否有框架試圖解決「使用C#編寫批處理文件」這個問題?

我希望C#/ .NET具有典型cmd.exe shell語言的即時模式類型功能。我是否只想要這樣的事情?

+1

你一定可以在PowerShell中執行腳本,它可以爲你提供所有你需要的.NET Framework API。不幸的是,它確實有一個不平凡的學習曲線。 – Bruce 2009-05-30 18:31:44

回答

26

我會試圖克服PowerShell的焦慮,因爲它是未來的殼。所有來自微軟的軟件都將其用作其管理界面,特別是2.0版本非常有用。

大部分時間我都是C#開發人員,但PowerShell解決了整個臨時項目的「WindowsApplication42」問題。 PowerShell使您可以在命令行shell中完全訪問.NET框架,因此即使您不知道如何在PowerShell中執行某些操作,您也很可能知道如何在.NET中執行此操作。

+1

不好說,完全同意。 – 2009-05-30 17:40:18

+1

Powershell 2.0中的+1非常有用。包含的ISE是值得的。 – 2009-05-30 18:12:52

+0

已售出。你的回答和約翰羅賓斯的博客終於讓我相信了。 :) http://www.wintellect.com/cs/blogs/jrobbins/archive/2008/02/17/eight-weeks-of-powershell.aspx – scobi 2009-05-31 16:04:04

3

IronPython和IronRuby 讓你充分利用你的所有.NET「體驗和代碼庫」(但他們並不回答你反對學習新語言)。

2

如果您有任何bash書呆子,可以隨時嘗試cygwin

還要記住,Python最初是作爲「膠水」語言使用的。如果你使用前面提到的IronPython,將預先編寫的C#類連接起來很容易。

+0

Bash或Windows上的任何這些shell真的很難。已經嘗試了很多次,我一直在搞「/ vs. \」問題。 :(因此,聽起來像IronPython和Powershell是迄今爲止最好的選擇。 – scobi 2009-05-31 15:36:48

1

如果你綁定到MS,PowerShell肯定是要走的路。但我不喜歡它。

我個人更多地使用MSBuild腳本,並且希望有朝一日能夠看到Mono C#Shell。

+0

什麼是「MSBuild腳本」?你只是指XML的東西?因爲它超級冗長,很難在​​printf調試之外調試,難以擴展。但是感謝Mono C#Shell的參考!我甚至沒有想過要檢查Mono,但它有道理,他們有這樣的東西。gui顯然不會在Windows上工作,但命令行版本應該是完全可移植的,它不會解決我在這個問題(批處理腳本)中遇到的問題,但它看起來總的來說非常有用,我將再次檢查它,再次感謝! – scobi 2009-05-31 15:33:20

+0

我不需要一個大型的MSBuild調試器腳本,所以我選擇這個,http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx – 2009-06-05 12:18:39

1

我認爲CS-Script可能是您的理想解決方案。