Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 有人能帮助理解这个批处理脚本吗?_Batch File_Batch Processing - Fatal编程技术网

Batch file 有人能帮助理解这个批处理脚本吗?

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语句执行一次。然后

我正在读一个批处理文件,但我不明白,有人能帮我解释一下吗

据我所知%0是批处理文件的名称,我们可以对其进行迭代吗?或者它是表示文件夹的一种方便方法

我在文件中找不到变量%BatchPath%,您认为它是在哪里定义的? 似乎在这两个循环中定义了冷漠

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是用于存储路径的变量

因此,基本上,脚本获取脚本文件名、驱动器位置的详细信息,并将其存储为最后一个批处理文件的运行位置或类似位置