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