【问题标题】:How to run a .bat from inside the IDE如何从 IDE 内部运行 .bat
【发布时间】:2011-08-02 03:07:01
【问题描述】:

我想做的很简单,却找不到方法。
在我的项目中,我有几个 .bat 文件(我知道,我老了)执行一些任务,比如运行 SqlMetal 等。

我只想右键单击文件并选择“运行”或其他内容,以便执行 bat。 我该怎么做?

注意:我知道我可以使用工具 -> 外部工具,但这不是我想要的

【问题讨论】:

  • 您是希望在构建期间执行此操作还是一般情况下执行此操作?
  • 那么您在寻找什么?工具 |外部工具将是执行此操作的明显方法。您在寻找什么附加功能?
  • @Ade:我在看生产力:)
  • @Ade:如果你有 20 多个项目和 3 个以上的 bat 文件:你最终会得到多少个菜单项?
  • 好的。现在我明白了这个问题。您可以解决此问题,请参阅下面的答案。

标签: visual-studio-2010 visual-studio-2012 visual-studio-2013


【解决方案1】:

如果每个项目都有一些与之关联的批处理文件,那么为什么不将它们包含在项目中并添加一个新的外部工具并将其与自定义菜单项链接以运行该工具呢?这将为您提供每个项目中的批处理文件列表以及运行它们的上下文菜单命令。唯一的缺点是它不是特定于文件类型的(它可以让您将任何文件作为批处理文件运行)。

这是怎么做的......

创建一个名为“运行批处理文件”的外部工具

  1. 将命令设置为:CMD.EXE
  2. 将参数设置为:/c "$(ItemPath)"
  3. 将初始目录设置为:$(ItemDir)
  4. 选中“使用输出窗口”复选框,然后应用以创建命令
  5. 注意新命令出现在命令列表中的位置。外部命令从分隔条下方的 1 开始编号。 #1 通常是“创建 GUID”

现在转到工具 -> 自定义并选择命令选项卡。

  1. 选择上下文菜单单选按钮,然后从下拉列表中选择“项目和解决方案上下文菜单 | 项”。
  2. 现在使用“添加命令...”添加新命令
  3. 在类别列表中选择“工具”
  4. 从命令中选择与“运行批处理文件”自定义命令的位置相对应的“外部命令编号”,您在上面的第 5 步中记下了编号。
  5. 将其移动到列表中的正确位置添加键盘快捷键等。
  6. 关闭对话框。

现在右键单击批处理文件,您应该会看到“运行批处理文件”菜单项。这将执行批处理文件并在 VS 输出窗口中显示其输出。

【讨论】:

  • 我从批处理文件中运行的程序出现了一些 IO 异常。如果其他人遇到这些问题,请不要选中“使用输出窗口”复选框以让批处理文件在它自己的 cmd 窗口中运行。
  • 以下是创建外部工具的方法。请参阅添加新工具部分。 msdn.microsoft.com/en-us/library/76712d27.aspx
  • 这个上下文菜单项是否可能只出现在.bat 文件中?很奇怪,如果我在 .cs 文件上单击它,它会在 Visual Studio 的另一个实例中打开该类。
  • 这种方式用的太频繁了,如果可以的话每次都上来!
【解决方案2】:
  • 在解决方案资源管理器中右键单击批处理文件
  • 从上下文菜单中选择“打开方式...”
  • 点击“添加...”
  • 在“程序名称”文本框中,输入 powershell.exe
  • 在“友好名称”文本框中输入“PowerShell”
  • 选择“设为默认值”
  • 点击确定

via

【讨论】:

  • 在 Visual Studio 2017 中,“程序名称”现在称为“程序”。
【解决方案3】:

查看Open Command Line Visual Studio 扩展。

根据描述,它具有:

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

对于解决方案中的文件,会显示一个上下文菜单按钮。

或者,编辑批处理文件时可以使用键盘快捷键 Shift+Alt+5。这使得执行任何批处理文件变得非常容易和快速——即使是那些不属于您的项目的文件。

【讨论】:

  • 方便的插件,超级容易设置!
【解决方案4】:

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

【讨论】:

  • 如果我制作另一个 bat 或执行该 bat 的 exe 可以工作。也不错的解决方案,但 Ade 解决方案对我来说更直接。
  • 批处理应包含:cmd.exe /c %1
  • 这在 VS2010 中对我不起作用。如果我输入的不是有效路径,则会引发错误。
【解决方案5】:

只是一个建议:这是一个可以通过 VsCommandBuddy 扩展来完成的场景。以下配置为示例:

{
    "cmdname": "mk",
    "title": "Run MK.BAT",
    "description": "Run the MK bat file.",
    "cwd": "$(SolutionDir)",
    "filename": "cmd.exe",
    "arguments": "/C mk.bat",
    "async": false
}

您也可以分配快捷键,这样您就可以使用快捷键调用您的批处理文件。输出出现在您的输出窗格中。

【讨论】:

    【解决方案6】:

    上述任何一项都无法正常工作,但确实如此(VS 2019/2022):

    1. Solution Explorer 中右键单击 .bat 文件并打开方式...
    2. 添加...
    3. 程序:CMD.exe
    4. 参数:/c %1
    5. 友好名称:Command
    6. OKSet as Default 双击批处理文件以从解决方案资源管理器中作为默认值运行(或右键单击 Open With... 并选择 Command em> 如果您不希望它成为默认值)。

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多