另一个有用的提示是,要将当前目录设置为 different drive ,首先必须使用 %~d0 ,然后是 cd %~dp0 . 这会将目录更改为批处理文件的驱动器,然后更改为其文件夹 .
或者,对于#oneLinerLovers,正如@Omni在评论中指出 cd /d %~dp0 将改变驱动器和目录:)
希望这有助于某人 .
138
Strawberry Perl便携式外壳 Launcher 的典范:
set drive=%~dp0
set drivep=%drive%
if #%drive:~-1%# == #\# set drivep=%drive:~0,-1%
set PATH=%drivep%\perl\site\bin;%drivep%\perl\bin;%drivep%\c\bin;%PATH%
不知道负面的1自己做了什么,但它有效!
35
一个例子很好 - 这是一个微不足道的
for %I in (*.*) do @echo %~xI
它仅列出当前文件夹中每个文件的EXTENSIONS
从CMD提示执行更多有用的变量组合(也在前面的响应中列出)执行: HELP FOR ,其中包含此代码段
可以组合修饰符以获得复合结果:
%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
environment variable for %I and expands to the
drive letter and path of the first one found.
%~ftzaI - expands %I to a DIR like output line
7 回答
调用
在命令行中提供有关此语法的帮助(也可以在FOR之外使用,这只是可以找到帮助的地方) .
您可以使用不同的字母,例如
f
用于"full path name",d
用于驱动器号,p
用于路径,它们可以组合使用 .%~
是每个序列的开头,数字I
表示它适用于参数%I
(其中%0
是批处理文件的完整名称,就像您假设的那样) .(首先,我想为批次推荐这个有用的参考站点:http://ss64.com/nt/)
然后只是另一个有用的解释:http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
并且here提供了更明确的参考:
%CmdCmdLine%
将返回传递给CMD.EXE的整个命令行%*
将从第一个命令行参数开始返回命令行的其余部分(在Windows NT 4中,%*还包括所有前导空格)如果%n是有效路径或文件名(无UNC),则
%~dn
将返回%n的驱动器号(n的范围为0到9)如果%n是有效路径或文件名(无UNC),
%~pn
将返回%n目录如果%n是有效文件名,则
%~nn
将仅返回%n的文件名如果%n是有效文件名,
%~xn
将仅返回%n的文件扩展名如果%n是有效的文件名或目录,
%~fn
将返回%n的完全限定路径ADD 1
刚刚为神秘的
~
代字号运算符找到了一些很好的参考 .%~
字符串称为percent tilde运算符 . 您可以在以下情况下找到它:%~0
.:~
字符串称为colon tilde运算符 . 你可以找到它像%SOME_VAR:~0,-1%
.ADD 2 - 1:12 PM 7/6/2018
%1-%9
参考命令行args . 如果它们是 not 有效路径值,%~dp1
-%~dp9
将全部扩展为与%~dp0
相同的值 . 但如果它们有效的路径值,它们将扩展为 their own 驱动程序/路径值 .例如:(batch.bat)
运行1:
运行2:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
批处理脚本中的变量
%0
设置为正在执行的批处理文件的名称 .%
和0
之间的~dp
特殊语法基本上表示扩展变量%0
以显示驱动器号和路径,它为您提供包含批处理文件的当前目录!%~dp0扩展到正在运行的批处理文件的当前目录路径 .
为了清楚地理解,让我们在目录中创建一个批处理文件 .
内容:
从命令提示符运行它时,您将看到以下结果:
另一个有用的提示是,要将当前目录设置为 different drive ,首先必须使用 %~d0 ,然后是 cd %~dp0 . 这会将目录更改为批处理文件的驱动器,然后更改为其文件夹 .
或者,对于#oneLinerLovers,正如@Omni在评论中指出 cd /d %~dp0 将改变驱动器和目录:)
希望这有助于某人 .
Strawberry Perl便携式外壳 Launcher 的典范:
不知道负面的1自己做了什么,但它有效!
一个例子很好 - 这是一个微不足道的
它仅列出当前文件夹中每个文件的EXTENSIONS
从CMD提示执行更多有用的变量组合(也在前面的响应中列出)执行:
HELP FOR
,其中包含此代码段可以组合修饰符以获得复合结果: