我被要求维护一些批处理文件,并且我在每个批处理文件的开头反复看到这一行。
FOR /f "usebackq tokens=*" %%a IN ('%0') DO SET this_cmds_dir=%%~dpa
CD /d "%this_cmds_dir%"有人知道第一行是做什么的吗?什么是%%~dpa?什么是%0?什么是usebackq?
发布于 2010-09-10 03:13:11
@Santhosh:%0将是当前批处理文件被称为的。这可以是以下任何一种形式:abc.bat、abc (无.bat后缀)、..\..\abc.bat、d:\path\to\abc.bat、"e:\path with spaces\to\abc.bat",可能还有更多。
现在,使用%0进行进一步处理在任何情况下都不起作用,因为它不是以规范形式存在的。您将使用
%~0:删除可能出现在%0.的%0周围的引号(如果any);
%~n0:只使用%0的名称而不使用suffix;
%~nx0:使用%0;
%~pnx0的name+suffix :使用path+name+suffix的%0 (不使用驱动器letter);
%~dpnx0:使用%0.的driveletter+path+name+suffix
如果这些参数是文件或目录,同样可以用于清理%1 (%0的第一个参数)、%2等。
https://stackoverflow.com/questions/3667026
复制相似问题