我在看一个批处理文件,它定义了以下变量:
set _SCRIPT_DRIVE=%~d0
set _SCRIPT_PATH=%~p0
%~d0或%~p0到底是什么意思? 是否有一组众所周知的值,如当前目录、驱动器、脚本参数? 还有其他类似的捷径可以用吗?
我在看一个批处理文件,它定义了以下变量:
set _SCRIPT_DRIVE=%~d0
set _SCRIPT_PATH=%~p0
%~d0或%~p0到底是什么意思? 是否有一组众所周知的值,如当前目录、驱动器、脚本参数? 还有其他类似的捷径可以用吗?
当前回答
神奇的变量%n包含用于调用文件的参数:%0是bat文件本身的路径,%1是其后的第一个参数,%2是第二个参数,以此类推。
因为参数通常是文件路径,所以有一些额外的语法来提取路径的部分。~d是驱动器,~p是路径(没有驱动器),~n是文件名。它们可以组合,所以~dp是驱动器+路径。
%~dp0因此在bat中非常有用:它是正在执行的bat文件所在的文件夹。
您还可以获得关于文件的其他类型的元信息:~t是时间戳,~z是大小。
请在这里查找所有命令行命令的参考。波浪魔术代码在for下面描述。
其他回答
神奇的变量%n包含用于调用文件的参数:%0是bat文件本身的路径,%1是其后的第一个参数,%2是第二个参数,以此类推。
因为参数通常是文件路径,所以有一些额外的语法来提取路径的部分。~d是驱动器,~p是路径(没有驱动器),~n是文件名。它们可以组合,所以~dp是驱动器+路径。
%~dp0因此在bat中非常有用:它是正在执行的bat文件所在的文件夹。
您还可以获得关于文件的其他类型的元信息:~t是时间戳,~z是大小。
请在这里查找所有命令行命令的参考。波浪魔术代码在for下面描述。
另一个有很大帮助的技巧是,要将当前目录设置到不同的驱动器,必须先使用%~d0,然后使用cd %~dp0。这将把目录更改为批处理文件的驱动器,然后更改为其文件夹。
对于#oneLinerLovers, cd /d %~dp0将同时更改驱动器和目录:)
希望这能帮助到一些人。
它显示您当前所在的文件或目录的当前位置。例如;如果批处理文件在桌面目录中,那么“%~dp0”将显示桌面目录。如果你想显示当前目录和当前文件名,你可以输入“%~dp0%~n0%~x0”。
%~d0提供参数0的驱动器号(脚本名),%~p0提供路径。
从批处理文件中的文件名解析和更多成语- Real的如何:
脚本所在的路径(不包含驱动器):~p0
脚本所在的驱动器:~d0