在 bat 文件中使用 cd 命令后停留在改变的目录

在 bat 文件中使用 cd 命令后停留在改变的目录

语境:

我有一个包含以下代码的 .BAT 文件:

cd C:\folder1\folder2
subl .

当在目录“C:/folder3”中执行该 .BAT 文件时,我希望停留在从我的 .BAT 文件导航的目录“C:\folder1\folder2”。现在我只是返回到我之前执行该 bat 文件的目录,即 C:\folder3。

这是因为我想在该目录“C:\folder1\folder2”中执行一些手动命令

答案1

你需要使用pushd

:: to call and make direcoty current
pushd C:\folder1\folder2
subl .
:: go back to your old current working directory
popd 

干杯。

答案2

cd和都pushd可以与您尝试在批处理文件中使用的任何命令一起使用 - 这里的问题是,当您尝试使用时,subl它将在批处理文件之外执行(忽略更改目录的尝试)。您要确保的第一件事是,您有正确的环境变量来从命令运行 Sublime。

去做这个:

  1. 进入控制面板
  2. 点击“系统”
  3. 单击“高级系统设置”
  4. 单击环境变量...
  5. 创建新的系统变量
  6. 将变量命名为 SUBLIME
  7. 将变量值设为 Sublime 安装的文件夹路径
    (即 C:\Program Files\Sublime Text 3)
  8. 单击“确定”
  9. 编辑位于用户变量中的路径变量
  10. 将 %SUBLIME% 添加到变量值中(在 之后;
  11. 单击所有窗口上的“确定”将其关闭

即使subl可以从命令中运行,问题仍然是sublime_text.exesubl.exe仍将从其主目录运行 - 无论在批处理中设置了什么当前目录。要解决这个问题,您需要在命令中包含目标目录,以便subl知道subl在哪里执行它们。您可以将目标目录设置为变量并在命令中使用它subl

@echo off

set "dir=C:\folder1\folder2"
subl "%dir%\targetfileorfolder"

希望这能有所帮助;这不是你在批处理文件中做错的事情——最终归结为配置问题subl。我找到了一个半相关的答案这里对于 Python,如果您愿意更改这些类型的设置(如果它们可用),您可能能够对 cmd/batch 执行类似的操作。

相关内容