什么';用C#编写批处理脚本的好方法是什么?

什么';用C#编写批处理脚本的好方法是什么?,c#,shell,command-line,powershell,batch-file,C#,Shell,Command Line,Powershell,Batch File,我想用C#编写简单的脚本。我通常使用的.bat或4NT.btm文件。复制文件、解析文本、询问用户输入等。相当简单,但在批处理文件中正确地执行这些操作非常困难(例如,没有例外) 我熟悉命令行“脚本编写”包装器,比如AxScript,因此我也参与了其中。我缺少的是简单的文件操作框架。我想能够做cd(“…”),复制(srcFile,destFile)类型的功能 我尝试过的工具: NANT,我们在构建过程中使用它。不是一个好的脚本工具。要添加一个简单的函数,必须编写一个扩展程序集。不能在线完成 Pow

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

我熟悉命令行“脚本编写”包装器,比如AxScript,因此我也参与了其中。我缺少的是简单的文件操作框架。我想能够做cd(“…”),复制(srcFile,destFile)类型的功能

我尝试过的工具:

  • NANT,我们在构建过程中使用它。不是一个好的脚本工具。要添加一个简单的函数,必须编写一个扩展程序集。不能在线完成

  • PowerShell。看起来很不错,但我只是没能切换到这个作为我的主shell。与4NT的差异太大。无论我做什么,都需要从普通的命令提示符运行,而不需要特殊的shell来运行它。PowerShell可以用作脚本执行器吗

  • Perl/Python/Ruby。我真的很讨厌学习一种全新的语言和框架,只是为了做批处理文件操作。我没有时间来做这件事。另外,我们是工具链的99%.NET商店,我真的想利用我们现有的经验和代码库

是否有框架试图解决您使用过的“用C#生成批处理文件”的问题


我想要C#/.NET的强大功能和典型cmd.exe shell语言的即时模式类型功能。只有我一个人想要这样的东西吗?

我会努力克服PowerShell的焦虑,因为它是未来的外壳。微软推出的所有软件都将其用作管理界面,尤其是2.0版,其使用非常有用


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

IronPython和IronRubydo让您充分利用所有.NET“经验和代码库”(不过,他们并没有回答你对学习新语言的反对意见)。

如果你有bash的书呆子,你可以随时尝试


还要记住,Python最初是作为一种“粘合”语言使用的。如果您使用上述方法,那么将预先编写的C#类绑定在一起是非常容易的。

如果您绑定到MS,PowerShell肯定是一种选择。但我不太喜欢它


我个人更喜欢使用MSBuild脚本,并希望有一天Mono C#Shell会出现在Windows上。

我认为这可能是您的理想解决方案。

+1在Powershell 2.0上非常有用。附带的ISE值得单独使用。售出。您的答案和John Robbins的博客最终说服了我。

您绝对可以在Powershell中编写脚本,它为您提供了所需的所有.NET Framework API。不幸的是,它确实有一个不平凡的学习曲线。“MSBuild脚本”是什么?你是说XML吗?因为它非常冗长,很难在printf调试之外进行调试,很难扩展。。。但感谢您对Mono C#Shell的介绍!我甚至没有想过要检查单核细胞增多症,但他们有这样的东西是有道理的。gui显然不能在Windows上工作,但命令行版本应该是完全可移植的。它不会解决我在这个问题(批处理脚本)中遇到的问题,但总体来说它看起来非常有用。我会查出来的,再次谢谢!对于MSBuild脚本,我不需要一个庞大的调试器,所以我选择了这个调试器,Bash或Windows上的任何一个shell都是非常困难的。我已经试过很多次了,但我一直被/vs问题困扰着(听起来IronPython和Powershell是目前为止最好的选择。