如何将批处理脚本的工作目录设置为调用快捷方式的位置?

时间:2018-01-23 17:48:54

标签: batch-file cmd

我有一个简单的批处理脚本,它将./source的内容复制到指定为参数的目标。将./source中的文件复制到目标后,它们将移至./archive

script.cmd "\\web01\www\accounting\assets" "otherArgs"

这个脚本将在几个区域中使用,但是我没有在每个区域使用脚本的离散副本,而是希望利用快捷方式(.lnk)指向脚本的一个副本,如果每个人都使用最新版本,那么如果进行了更改。

文件夹结构如下所示:

company
|
+-- script.cmd
|
+-- accounting
|  |
|  +-- archive
|  |   |
|  |   \-- oldFile
|  |
|  +-- source
|  |   |
|  |   \-- newFile
|  |
|  \-- script.lnk -> ..\script.cmd
|
+-- hr
|  |
|  +-- archive
|  |   |
|  |   \-- oldFile
|  |
|  +-- source
|  |   |
|  |   \-- newFile
|  |
|  \-- script.lnk -> ..\script.cmd
|
+-- sales
|  |
|  +-- archive
|  |   |
|  |   \-- oldFile
|  |
|  +-- source
|  |   |
|  |   \-- newFile
|  |
|  \-- script.lnk -> ..\script.cmd
|
...

目前,该脚本未使用正确的存档和源目录。它试图在顶层查找目录,而不是在子目录中查找目录。是否有像%~dp0%cd%这样的变量会有快捷方式所在的路径?或者有没有办法可以在不使用绝对路径的情况下将其作为参数传递?如

script.cmd "\\web01\www\accounting\assets" "%cd%" "otherArgs"

1 个答案:

答案 0 :(得分:0)

使用别名脚本:

@setlocal ENABLEEXTENSIONS
@cd %~dp0
call %path_to_script%\script.cmd %*

将其中一个放在每个目录中。不需要快捷方式。