![让任务计划程序从程序的位置运行程序](https://linux22.com/image/1541024/%E8%AE%A9%E4%BB%BB%E5%8A%A1%E8%AE%A1%E5%88%92%E7%A8%8B%E5%BA%8F%E4%BB%8E%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%BD%8D%E7%BD%AE%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F.png)
我编写了一个 .cmd 脚本,希望每天早上 7:30 运行它。现在,如果我手动运行该任务,它能够运行我在其中输入的所有命令(其中一些是辅助 .cmd 脚本),因为该程序从父脚本的位置启动。当测试 Windows 的任务计划程序运行脚本的方式时,当前目录变量显示为 system32(cmd.exe 所在的位置),因此当我的脚本尝试查找任何辅助脚本时,都会失败,因为它们不在 system32 中。
我知道,在我的父脚本的开头我可以简单地写:
cd PathToParentScript
但我想避免这种情况,因为我计划将该脚本提供给其他同行,并希望将我的所有配置变量保存在一个地方(即我的一个辅助脚本)。
是否可以让任务计划程序从脚本的位置而不是 cmd.exe 所在的位置启动脚本?如果可以,我该怎么做?
我有 Windows 10。
答案1
通过在开头添加以下命令来配置脚本以切换到实际脚本的当前位置:
CD /d %~dp0
它将扩展为:
CD /d drive:path_of script
笔记:如果脚本的驱动器与当前驱动器不同,该/D
参数可使 CD 切换到脚本的驱动器。
语法是对变量(即脚本文件的名称)%~dp0
的修改%0
~dp
,其中 d是驱动力和页是路径。
答案2
设置操作的选项还应该有一个标有“开始于(可选)”的框,将其设置为您希望脚本在其中运行的文件夹。