有人可以帮助理解这个批处理脚本吗?

时间:2013-01-28 10:03:43

标签: batch-file batch-processing

我正在阅读批处理文件,但我不明白,有人可以帮忙解释一下吗?

据我所知,%0是批处理文件的名称,我们可以迭代它吗?或者它是表示文件夹的便捷方式?

我在文件中找不到变量%BatchPath%,您认为它在哪里定义? 看来APATH是在两个循环中定义的吗?

for %%x in (%0) do set APATH=%%~dpsx
for %%x in (%BatchPath%) do set APATH=%%~dpsx
pushd %APATH%

2 个答案:

答案 0 :(得分:3)

您可以迭代单个值。它只意味着set语句执行一次。然后~dps删除文件名,以便只保留目录。

第一行在%0上执行此操作,实际上是当前脚本的路径和名称。

第二行对给定变量执行相同的操作,现在这是有趣的部分,因为如果%BatchPath%为空,则不会迭代任何内容,因此该行上的set语句不会被执行一点都不。

如此有效,它存储一个目录,默认情况下是脚本的目录,但可以在调用此脚本之前通过显式指定%BatchPath%的路径来覆盖。

pushd允许您保存目录,以便稍后使用popd返回目录。它允许脚本跳转到另一个目录,能够在shell终止之前将shell还原到原始目录。

答案 1 :(得分:0)

  
    

%0是当前批处理文件      %% ~dpsx给出当前批处理文件     这里的短路径给出了驱动器名称,例如“D:\”     推送在将当前目录更改为指定目录之前,存储当前目录的名称以供popd命令使用     目录。     APATH是用于存储路径的变量。

  

基本上,脚本正在获取有关脚本文件名,驱动器位置的详细信息,并将其存储为用作最后一批文件运行的位置或类似内容。