在当前目录中打开 CMD 的 BAT 文件

Posted

技术标签:

【中文标题】在当前目录中打开 CMD 的 BAT 文件【英文标题】:BAT file to open CMD in current directory 【发布时间】:2011-05-25 23:58:35 【问题描述】:

我有很多脚本可以通过命令行进行交互。每次我需要使用它们时,我都必须打开一个命令行窗口并复制+粘贴和 CD 到它们所在目录的路径。这很乏味(它们位于一个相当深的文件系统中,所以输入完整路径是一种痛苦,复制+粘贴更好但不多)。我试图创建一个 .BAT 文件,我可以双击它,在 .bat 文件所在的文件夹中打开一个新的命令行窗口,但它不起作用。它会打开一个新窗口,但工作目录不是 .bat 文件所在的目录。这是我经过多次谷歌搜索后得到的(我的 cmd 技能不太好):

cd %CD%
cmd.exe

我在使用 Linux 时就知道 Konqueror 有一个“此处的命令行窗口”功能,这就是我试图在 Windows 上获得的效果。

【问题讨论】:

Dos 和 cmd 是两个不同的东西。 在 Windows 10 上,有一种简单的方法:在资源管理器中导航到您的脚本(无论如何您都这样做),然后单击资源管理器窗口左上角的“文件”,然后单击“打开命令” promt”->“打开命令提示符”或“以管理员身份打开命令提示符”...瞧! 另一种选择是使用Cmder 或ConEmu(顺便说一句,比cmd.exe 好得多)。如果安装正确,它们会在 Windows 资源管理器中为您提供上下文菜单(例如此处的 cmder),它将在当前路径上显示控制台。因此不再需要手动复制和粘贴或键入路径。 @TsetNoitamotua 自 Vista 以来的所有 Windows 在按 shift+右键单击任何文件夹时都有“在此处打开命令提示符窗口”。同样可以通过 shift+F10、shift+m​​enu 或 alt+D > cmd > enter 来实现 【参考方案1】:

当您在所需的文件夹中时,只需在您的address bar 中输入CMD

【讨论】:

【参考方案2】:

您可以简单地在任何方便的地方创建一个 bat 文件,然后将所需目录中的任何文件拖放到该文件上。 哈哈。代码:

cmd

【讨论】:

【参考方案3】:

在给定文件夹内点击顶部地址栏并输入cmd并点击enter 它将使用当前文件夹地址打开命令提示符。

【讨论】:

【参考方案4】:

你可以试试:

shift + 右击

然后,点击此处打开命令提示符

【讨论】:

【参考方案5】:

参考@Chris 的回答,

我们也可以进入批处理文件的父目录并使用以下命令运行命令

cd /d %~dp0..
<OTHER_BATCH_COMMANDS>
cmd.exe

要了解命令cd /d %~dp0.. 的工作原理,请参考以下链接

What does it mean by command cd /d %~dp0 in Windows

【讨论】:

【参考方案6】:

资源管理器中最简单的方法是 Shift + 鼠标右键单击文件夹或文件夹中的空白区域,然后单击 Open command prompt here

CMD 将在该文件夹中启动

我必须说,我不确定它是否适用于 Windows Vista 及更低版本,但它肯定适用于 Windows 7、8、8.1 和 10。

【讨论】:

【参考方案7】:

使用以下行创建一个名为 open_dos_here.cmd 的文件:

%~d1
cd "%~p1"
call cmd

将此文件放在任何文件夹中。 然后,转到您的发送到文件夹 (Win+E; Alt+D;shell:sendto;输入)。 创建一个快捷方式指向这个 open_dos_here.cmd

然后,在任意文件夹中,选择任意文件或子文件夹。右键单击并选择“发送到”,然后选择open_dos_here.cmd 以打开该文件夹中的 DOS。

【讨论】:

太棒了!唯一的问题是打开的窗口没有使用我设置的大小。我将 DOS 设置为在比正常窗口更宽的窗口中运行,并使用这个技巧,它会在看起来像默认宽度的窗口中打开。为什么会退回到默认值? 您可以转到发送至文件夹。找出 open_dos_here.cmd 的快捷方式。然后,右键单击并选择属性。然后,更改字体、布局等以适合您的风格。另外,从其他人的帖子中可以看出,添加这样的双引号:“%~p1” 你应该解释每一行。 其实,当你右击一个文件(例如C:\myFolder\myFile.txt),选择[Send To],然后选择open_dos_here.cmd的快捷方式,操作系统会放完整路径所选文件的文件名作为调用批处理文件 open_dos_here.cmd 的第一个参数。因此,在 open_dos_here.cmd 中,它只使用第一个参数(即 %1)来完成工作。第一行 %~d1 仅提取 %1 的驱动器号(例如 C:)。这转到C盘。第二行 cd 到 %~p1,它是 %1 的路径(即 \myFolder)。进入该目录后,只需调用cmd即可打开DOS命令提示符。 @todofixthis 如果我想用这个执行一个dos命令怎么办?【参考方案8】:

在你的目录下新建一个文件 startCmdLine.bat 并把这一行放在里面

call cmd

就是这样。现在双击 .bat 文件。它对我有用。

你可以用start替换call,它也可以。

【讨论】:

【参考方案9】:

此代码对我有用 把它命名为cmd.bat

@echo off
title This is Only A Test
echo.
:Loop
set /p the="%cd%"
%the%
echo.
goto loop

【讨论】:

【参考方案10】:

执行此操作的最简单命令:start

您始终可以在命令行中运行它以在同一位置打开新的命令行窗口。或者你可以把它放在你的 .bat 文件中。

【讨论】:

【参考方案11】:

还有更简单的方法

start /d "folder path"

【讨论】:

适用于 Windows 10。【参考方案12】:

游戏有点晚了,但如果我正确理解您的需求,这将有助于解决同样问题的人。

第一步相同的两种解决方案: 首先导航到您保存脚本的位置并将文件路径复制到该目录。

第一个解决方案:

点击“开始” 右键单击“计算机”(或“我的电脑”) 点击“属性” 点击左侧的“高级系统设置” 点击“环境变量” 在“系统变量”框中,向下滚动并选择“路径” 点击“编辑” 在“变量值”字段中,一直滚动到右侧 如果那里还没有分号 (;),请添加它。 粘贴到您之前复制的文件路径中。 以分号结尾。 点击“确定” 再次点击“确定” 最后一次点击“确定”

您现在可以像使用该文件夹一样使用任何脚本。

第二个解决方案:(可以很容易地与第一个配对以获得额外的有用性)

在您的桌面上创建一个包含以下内容的批处理文件。

@echo off
cmd /k cd "C:\your\file\path"

这将打开一个命令窗口,就像您尝试做的那样。


有关 Windows 命令的大量信息,请查看此处:http://ss64.com/nt/

【讨论】:

【参考方案13】:

您可以通过注册表添加上下文菜单项:

    在您的注册表中导航到 HKEY_LOCAL_MACHINE/Software/Classes/Folder/Shell 并创建一个不带引号的名为“命令提示符”的键。

    将默认字符串设置为您希望在右键菜单中显示的任何文本。

    在新创建的命令提示符中创建一个名为“command”的新键,并将默认字符串设置为

    cmd.exe /k pushd %1
    

如果找不到可执行文件,您可能需要在 cmd.exe 前添加%SystemRoot%\system32\

    应立即进行更改。右键单击一个文件夹,您的新菜单项应该会出现。

另见http://www.petri.co.il/add_command_prompt_here_shortcut_to_windows_explorer.htm

【讨论】:

【参考方案14】:

我在想,如果您创建的批处理脚本依赖于将当前目录设置为包含批处理文件的文件夹,那么当您尝试使用完全限定路径,就像来自调度程序一样。

最好也将此行添加到您的批处理文件中:

REM Change Current Directory to the location of this batch file 
CD /D %~dp0

除非您完全符合所有路径。

【讨论】:

这对我来说非常有效,谢谢。我的问题是我需要执行一个批处理脚本,该脚本假定当前目录设置为包含批处理文件的文件夹。无论谁运行,此行都使该批处理文件正确运行。谢谢! 理想。正是我们所需要的。有一个需要管理员访问权限但也需要假定当前目录的 bat。和 Cory 一样,现在无论谁运行它都能正常运行。【参考方案15】:

另一种解决方案是使用 cmd.exe 的快捷方式文件,而不是批处理文件。

将快捷方式的 start in 属性编辑为 %~dp0

你实现了同样的事情,除了它有 Cmd 图标(你可以改变它)。

有些人不喜欢在不知道其中内容的情况下单击批处理文件,而某些公司网络驱动器禁止使用 .bat 文件...

【讨论】:

【参考方案16】:

您只需在资源管理器的地址栏中输入cmd,它就会在该路径中启动。 PowerShell 也是如此。

【讨论】:

刚刚尝试过,系统尝试在地址 http://cmd/ 处打开一个新的 Internet Explorer 选项卡(当然这根本没有帮助)。另外,我们这里没有安装 PowerShell。 啊。我们这里还有 Windows XP。我会记住这个提示以供家庭使用。 注意它是 Windows XP 还是 Win 7 的东西,但建议是在“资源管理器”地址栏中键入 CMD,而不是“Internet Explorer”。这是您在文件夹中打开的文件浏览器。它将在其中包含文件夹的路径。它在 Windows 7 上运行良好。 @Michael:这就是我尝试的方法:在资源管理器(不是 Internet Explorer)的地址栏中输入CMD,然后导致WinXP尝试在 Internet Explorer 中打开 CMD 作为 URL。所以我认为可以肯定地说这是 Win7+ 的东西。【参考方案17】:

作为更通用的解决方案,您可能需要查看 Microsoft Power Toy for XP,它在您右键单击时添加了“在此处打开命令窗口”选项:http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx

在 Vista 和 Windows 7 中,如果您按住 shift 并右键单击(这是内置的),您将获得该选项。

【讨论】:

能否以某种方式更改 Windows 7 的此功能以打开 PowerShell 而不是 CMD? 链接好像改成了windows.microsoft.com/en-us/windows/xp-downloads#2TC=powertoys【参考方案18】:

你可能想这样做:

cd /d %~dp0
cmd.exe

这会将您的当前目录设置为您有批处理文件的目录

【讨论】:

是的!有用!!现在我在哪里可以找到对此的解释? 'cd' 是一个特定于系统的命令 - 由 microsoft 为他们的 commond-line 实现,'%~dp0' 只是保存当前正在执行的批处理文件所在路径的变量 - 因此执行这个命令将带你到那个目录(显然这个变量只能从批处理文件中获得,这是有道理的) Chris 不应该是:cd "%~dp0" 用双引号吗? 您好,您尝试过吗?对我来说,上面的解决方案效果很好......如果文件路径中有空格,引号可能会有所帮助,但我从来没有遇到过任何问题 'cd /d %~dp0' @FrustratedWithFormsDesigner:如果它解决了您的问题,您为什么不将此设置为接受的答案?它确实为我解决了这个问题!

以上是关于在当前目录中打开 CMD 的 BAT 文件的主要内容,如果未能解决你的问题,请参考以下文章

三种方法在当前目录下打开cmd命令窗口

如何用bat调用bandizip加密压缩当前目录的所有文件夹?

批处理(bat)命令之cd 命令

bat批处理里怎么取得当前目录

写个bat 脚本 打开cmd 并指向某个目录

电脑系统如何在当前目录快速打开cmd