首页 > 解决方案 > 强制批处理执行目录

问题描述

我有一个批处理是通过在其上拖放一个文件来启动的(又名 %1 参数 = 文件路径)。但这会导致它在拖放文件所在的目录中启动。

问:如何强制批处理在 .bat 文件所在的目录中运行(路径可能会更改,因此它不能是静态的)。是否有某种方法可以获取 .bat 文件的目录,然后在执行更多行之前通过 cd 命令移动到该目录?

标签: batch-file

解决方案


你的 / 的目录是:"%~dp0"

拖放文件的目录是:"%~dp1"

@echo off 

cd /d "%~dp0"

echo/ & echo/ Bat path is: "%~dp0"
echo/ & echo/ Current path is: "%__CD__%" or "%CD%"
echo/ & echo/ Argument path is: "%~dp1"

%__APPDIR__%timeout.exe -1 

观察:

又名 %1 参数 = 文件路径不完全正确,这是您的参数,对于您需要使用的路径"%~dp1"

  • 语法参数
    • 操作方法:将命令行参数(参数)传递给 Windows 批处理文件。

推荐阅读