2009-05-30 90 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可能是您的理想解决方案。