如何在IDE中运行.bat文件

85
我想做的事情非常简单,但找不到实现的方法。
在我的项目中有几个.bat文件(我知道,我很古老)执行一些任务,比如运行SqlMetal等。

我只想右键单击文件并选择“运行”或类似的选项来执行bat文件。我该怎么做?

注:我知道可以使用“工具”->“外部工具”,但这不是我要找的方法


你是想在构建期间做这个还是一般情况下? - linuxuser27
1
那么你在寻找什么?工具 | 外部工具是显而易见的方法。你还在寻找什么额外的功能? - Ade Miller
@Ade:我在关注提高生产效率 :) - Eduardo Molteni
1
@Ade:如果您有20多个项目,每个项目都有3个以上的bat文件,那么您最终会得到多少个菜单项? - Eduardo Molteni
好的。现在我理解了问题所在。你可以修复它,看看我的答案。 - Ade Miller
6个回答

153
如果每个项目都有与之关联的一些批处理文件,那么为什么不将它们包含在项目中,再添加一个外部工具,并将其与自定义菜单项链接起来以运行该工具呢?这将提供您每个项目中批处理文件的列表和上下文菜单命令以运行它们。唯一的缺点是它不是特定于文件类型的(它会让您运行任何文件作为批处理文件)。
以下是具体步骤:
1. 创建一个名为“运行批处理文件”的外部工具 2. 将命令设置为:CMD.EXE 3. 将参数设置为:/c "$(ItemPath)" 4. 将初始目录设置为:$(ItemDir) 5. 勾选“使用输出窗口”复选框,然后应用以创建命令 6. 查看新命令出现在命令列表中的位置。外部命令从分隔条下方开始编号,#1通常是“创建GUID”。 7. 现在转到“工具”->“自定义”,选择“命令”选项卡。 8. 选择上下文菜单单选按钮,从下拉列表中选择“项目和解决方案上下文菜单| 项”。 9. 现在使用“添加命令...”添加一个新命令。 10. 在类别列表中选择“工具”。 11. 从命令中选择与步骤5中记下的“运行批处理文件”定制命令位置相对应的“外部命令#”。 12. 将其移动到列表中的正确位置,并添加键盘快捷方式等设置。 13. 关闭对话框。 14. 现在右键单击批处理文件,您应该会看到一个“运行批处理文件”菜单项。这将执行批处理文件并将其输出显示在VS输出窗口中。

1
我在运行批处理文件时遇到了一些IO异常。如果其他人也遇到了这些问题,请不要勾选“使用输出窗口”复选框,以便让批处理文件在自己的cmd窗口中运行。 - DLeh
这里是创建外部工具的方法...请参阅“添加新工具”部分。https://msdn.microsoft.com/zh-cn/library/76712d27.aspx - demented hedgehog
这个上下文菜单项只出现在 .bat 文件上是可能的吗?如果我在 .cs 文件上点击它,它会在 Visual Studio 的另一个实例中打开类,这很奇怪。 - Wolfsblvt
1
如果可以的话,我会每次都增加使用频率! - KarmaEDV

38
  • 在解决方案资源管理器中右键单击批处理文件
  • 从上下文菜单中选择“打开方式…”
  • 单击“添加…”
  • 在“程序名称”文本框中输入powershell.exe
  • 在“友好名称”文本框中输入“PowerShell”
  • 选择“设为默认值”
  • 单击确定

参考链接


在Visual Studio 2017中,“程序名称”现在被称为“程序”。 - thecoolmacdude

14

查看Visual Studio的Open Command Line扩展程序

根据描述,它具有以下特点:

  • 在项目根目录下打开命令行。
  • 支持所有控制台,如CMD、PowerShell、Bash等。
  • 语法高亮、智能感知和执行.cmd和.bat文件

对于解决方案中的文件,会出现上下文菜单按钮。

执行批处理文件

此外,当编辑批处理文件时,还可以使用Shift+Alt+5快捷键。这使得执行任何批处理文件变得非常容易和快捷,即使这些文件不是您项目的一部分也可以执行。


方便的插件,设置超级简单! - CrazyTim

6

在“解决方案资源管理器”窗口中右键单击文件,选择“打开方式”,单击“添加”按钮以添加您的 .bat 文件。在 .bat 文件中使用 %1 来获取所选文件的路径。


2
如果我制作另一个批处理文件或可执行文件来执行这个批处理文件,也可以工作。这是一个不错的解决方案,但对我来说Ade的解决方案更加直接。 - Eduardo Molteni
2
批处理应包含:cmd.exe /c %1 - Julio Nobre
在VS2010中,这对我不起作用。如果我输入的不是有效路径,它会抛出一个错误。 - Drew Chapin

5

以上方法都无法正常工作,但是这个方法可以解决问题(适用于VS 2019/2022):

  1. Solution Explorer 中右键单击一个 .bat 文件并选择 打开方式...
  2. 添加...
  3. 程序:CMD.exe
  4. 参数:/c %1
  5. 友好名称:命令行
  6. 确定 并将其设置为默认的批处理文件双击运行方式(或者如果您不想将其设置为默认选项,则右键单击 打开方式... 并选择 命令行)。

Add Progream


终于有东西真的管用了,谢谢! - Sadistik

0
仅供参考:这是一个可以使用VsCommandBuddy扩展完成的场景。以下配置是一个示例:
{
    "cmdname": "mk",
    "title": "Run MK.BAT",
    "description": "Run the MK bat file.",
    "cwd": "$(SolutionDir)",
    "filename": "cmd.exe",
    "arguments": "/C mk.bat",
    "async": false
}

你也可以分配快捷键,这样你就可以使用快捷键调用批处理文件。输出结果将显示在输出窗格中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接