cd $(dirname $0) 的 Windows bat 类似物是什么?

cd $(dirname $0) 的 Windows bat 类似物是什么?

我花了很长时间才找到这个简单问题的答案,终于找到了。想与那些将 shell 脚本移植到 bat 模拟程序的人分享。

答案1

简单的解决方案是:

cd /d "%~dp0"

%0包含正在运行的.bat或.cmd文件的完整路径。

扩展~可应用于所有编号参数 ( %0... %9) 以及 FOR 使用的单字母变量(例如%%a)。最常用的扩展是:

  • ~d:驱动器号(带冒号)
  • ~p:目录路径(不带驱动器号)
  • ~n:不带扩展名的文件名
  • ~x:文件扩展名(以点开头)

因此将它们组合成%~dp0将像 一样工作dirname,而%~nx0将像 一样工作basename

答案2

@Stand Alone 描述的答案并不完全可靠,因为如果脚本在另一个驱动器而不是当前目录中,它将不起作用。因此其他一些解决方案是:

方法 1

pushd "%~dp0"

方法 2

cd /d "%~dp0"

笔记:要将目录更改为最后设置的目录,popd可以使用命令。这仅在使用#方法 1 更改目录后才有效。

答案3

cd /d "%0\.."

每个文件名都可以用作目录路径 ))

相关内容