我正在阅读批处理文件,但我不明白,有人可以帮忙解释一下吗?
据我所知,%0是批处理文件的名称,我们可以迭代它吗?或者它是表示文件夹的便捷方式?
我在文件中找不到变量%BatchPath%,您认为它在哪里定义? 看来APATH是在两个循环中定义的吗?
for %%x in (%0) do set APATH=%%~dpsx
for %%x in (%BatchPath%) do set APATH=%%~dpsx
pushd %APATH%
答案 0 :(得分:3)
您可以迭代单个值。它只意味着set
语句执行一次。然后~dps
删除文件名,以便只保留目录。
第一行在%0上执行此操作,实际上是当前脚本的路径和名称。
第二行对给定变量执行相同的操作,现在这是有趣的部分,因为如果%BatchPath%
为空,则不会迭代任何内容,因此该行上的set
语句不会被执行一点都不。
如此有效,它存储一个目录,默认情况下是脚本的目录,但可以在调用此脚本之前通过显式指定%BatchPath%
的路径来覆盖。
pushd
允许您保存目录,以便稍后使用popd
返回目录。它允许脚本跳转到另一个目录,能够在shell终止之前将shell还原到原始目录。
答案 1 :(得分:0)
%0是当前批处理文件 %% ~dpsx给出当前批处理文件 这里的短路径给出了驱动器名称,例如“D:\” 推送在将当前目录更改为指定目录之前,存储当前目录的名称以供popd命令使用 目录。 APATH是用于存储路径的变量。
基本上,脚本正在获取有关脚本文件名,驱动器位置的详细信息,并将其存储为用作最后一批文件运行的位置或类似内容。