|
原帖由 caozhi256 于 2007-6-22 02:56 AM 发表
我是个菜鸟。发现这个代码太好用了,想听行家解释下。老毛有空吗?那位大虾有空?
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SE ...
SET Var0=%0
%0参数是默认参数,任何一个CMD文件运行时均会有此参数,它返回可能带引号的当前CMD文件名及其路径,例如:“"Z:\1\A.CMD"”。
因此整条语句的意思是新建一个Var0变量,并将当前CMD文件名及其路径保存在Var0变量中。
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
%Var0:~0,1%是获取变量Var0变量从0开始的一个字符号,即"。如果是%Var0:~1,2%则是从1开始的2个字符,即Z:。如果是%Var0:~0,-1%则是"Z:\1\A.CMD,从尾部减去了一个字符。
因此整条语句的意思是去除Var0变量的左右"号。
^号的意思大概与C语言中的指针相同,应该是引用的意思。
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
看不懂,但TP=%%~dpI的意思是从Var0变量中获取路径部分并赋值给TP,其中~dp是关键字。
因此整条语句的意思是获取Var0变量中的路径部分。例如:“"Z:\1\"”
SET TP=%TP:~0,-1%
再将Var0从尾部减去了一个字符,即去除右“\”号。因此最终得到不带右“\”号和双引号的纯路径部分并赋值给TP。例如:“"Z:\1"” |
|