在C#中编写批处理脚本的好方法是什么?

时间:2009-05-30 17:32:26

标签: c# shell command-line powershell batch-file

我想用C#编写简单的脚本。我通常会使用.bat或4NT .btm文件。复制文件,解析文本,询问用户输入等。相当简单,但在批处理文件中执行此操作非常困难(例如,没有例外)。

我熟悉像AxScript这样的命令行“脚本”包装器,这样我就可以使用它。我缺少的是简单的文件操作框架。我希望能够做cd(“..”),copy(srcFile,destFile)类型的功能。

我尝试过的工具:

  • NANT,我们在构建过程中使用它。不是一个好的脚本工具。疯狂冗长的XML语法并添加一个简单的函数,您必须编写扩展程序集。不能内联。

  • PowerShell的。看起来很棒,但我只是无法切换到我的主要shell。与4NT有太多不同。无论我做什么都需要从普通的命令提示符运行而不需要特殊的shell来运行它。 PowerShell可以用作脚本执行程序吗?

  • 的Perl / Python的/红宝石。真的讨厌学习一种全新的语言和框架来进行批处理文件操作。无法投入我需要的时间来做这件事。此外,我们的工具链是99%的.NET商店,我真的想利用我们现有的经验和代码库。

是否有框架试图解决您使用过的“在C#中制作批处理文件”的问题?

我希望C#/ .NET具有典型cmd.exe shell语言的立即模式类型功能。我一个人想要这样的东西吗?

5 个答案:

答案 0 :(得分:26)

我会试着克服PowerShell的焦虑,因为它是未来的外壳。所有来自Microsoft的软件都将它用作管理界面,尤其是2.0版本非常有用。

我大部分时间都是C#开发人员,但PowerShell解决了临时项目的整个“WindowsApplication42”问题。 PowerShell使您可以在命令行shell中完全访问.NET框架,因此即使您不知道如何在PowerShell中执行某些操作,您也很可能知道如何在.NET中执行此操作。

答案 1 :(得分:3)

IronPython和IronRuby 执行让您利用所有.NET“经验和代码库”(但他们不会回答您对学习新语言的反对意见)。

答案 2 :(得分:2)

如果您有任何bash书呆子,您可以随时尝试cygwin

另外请记住,Python最初是作为“粘合剂”使用的。如果您使用上述IronPython,那么将预先编写的C#类绑定在一起非常容易。

答案 3 :(得分:1)

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

我个人更多地使用MSBuild脚本,并且希望有一天能看到Mono C#Shell来到Windows。

答案 4 :(得分:1)

我认为CS-Script可能是您理想的解决方案。