for命令中的变量
先把 FOR 的变量全部列出来:
~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
注意:
I 就是 for 声明的变量
删除任何引号("),扩展 %I
举例:
d:\cmd\03>echo "hello world!">temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
d:\cmd\03>echo "I love You!!>>temp.txt
"I love You!!>>temp.txt
d:\cmd\03>echo ^"I love You!!>>temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
I love You!!
d:\cmd\03>echo ^"Thank" you!!!">>temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
I love You!!
Thank" you!!!
d:\cmd\03>echo ^"Thank" you!!!"!>>temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
I love You!!
Thank" you!!!
Thank" you!!!"!
注意:
不成对的引号要加转义字符^ ,重定向符号前不要留空格
将 %I 扩展到一个完全合格的路径名,
即, (打印) 该文件/目录 的绝对路径.
举例:
d:\cmd>dir /b
01
02
03
d:\cmd>for /f "delims==" %i in ('dir /b') do @echo %~fi
d:\cmd\01
d:\cmd\02
d:\cmd\03
仅将 %I 扩展到一个驱动器号
即, (打印) 该文件/目录 所在的盘符.
举例:
d:\cmd>dir /b
01
02
03
d:\cmd>for /f "delims=" %i in ('dir /b') do @echo %~di
d:
d:
d:
仅将 %I 扩展到一个路径
扩展后:绝对路径 - 文件名(带扩展名) - 盘符(带冒号)
即, d:\cmd\02\1.txt => \cmd\02\
举例:
d:\cmd\02>dir /b
1.bat
1.txt
d:\cmd\02>for /f "delims=" %i in ('dir /b') do @echo %~pi
\cmd\02\
\cmd\02\
仅将 %I 扩展到一个文件名
即, (打印) 文件/目录 名字, 不带扩展名
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f "delims=" %i in ('dir /b') do @echo %~ni
dir
temp
仅将 %I 扩展到一个文件扩展名
即, (打印) 文件 的扩展名
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f %i in ('dir /b') do @echo %~xi
ECHO 处于打开状态。
.txt
扩展的路径只含有短名
即, 还是打印绝对路径
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f %i in ('dir /b') do @echo %~si
d:\cmd\03\dir
d:\cmd\03\temp.txt
将 %I 扩展到文件的文件属性
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f %i in ('dir /b') do @echo %~ai
d--------
--a------
将 %I 扩展到文件的日期/时间
举例:
D:\cmd\03>dir /b
dir
temp.txt
// 打印文件建立的日期
D:\cmd\03>for /f %i in ('dir /b') do @echo %~ti
2013/07/12 16:54
2013/07/12 16:29
将 %I 扩展到文件的大小
举例:
D:\cmd\03>dir /b
dir
temp.txt
// 打印文件大小
D:\cmd\03>for /f %i in ('dir /b') do @echo %~zi
0
66
查找列在路径环境变量的目录,并将 %I 扩展
即, 在 Path环境变量中, 查找指定字符串, 有则返回"="右边的值.
举例:
存在=>
D:\cmd\03>for /f "delims=" %i in ("notepad.exe") do @echo %~$path:i
C:\Windows\System32\notepad.exe
不存在=>
D:\cmd\03>for /f "delims=" %i in ("notepad123.exe") do @echo %~$path:i
ECHO 处于打开状态。
说明:
在 PATH变量里指定的路径里搜索 notepad.exe文件,
如果有 notepad.exe则会把他所在绝对路径打印出来,
没有就打印一个错误
先把 FOR 的变量全部列出来:
~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串
注意:
I 就是 for 声明的变量
一, %~I
作用:删除任何引号("),扩展 %I
举例:
d:\cmd\03>echo "hello world!">temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
d:\cmd\03>echo "I love You!!>>temp.txt
"I love You!!>>temp.txt
d:\cmd\03>echo ^"I love You!!>>temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
I love You!!
d:\cmd\03>echo ^"Thank" you!!!">>temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
I love You!!
Thank" you!!!
d:\cmd\03>echo ^"Thank" you!!!"!>>temp.txt
d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
hello world!
I love You!!
Thank" you!!!
Thank" you!!!"!
注意:
不成对的引号要加转义字符^ ,重定向符号前不要留空格
二, %~fI
作用:将 %I 扩展到一个完全合格的路径名,
即, (打印) 该文件/目录 的绝对路径.
举例:
d:\cmd>dir /b
01
02
03
d:\cmd>for /f "delims==" %i in ('dir /b') do @echo %~fi
d:\cmd\01
d:\cmd\02
d:\cmd\03
三, %~dI
作用:仅将 %I 扩展到一个驱动器号
即, (打印) 该文件/目录 所在的盘符.
举例:
d:\cmd>dir /b
01
02
03
d:\cmd>for /f "delims=" %i in ('dir /b') do @echo %~di
d:
d:
d:
四, %~pI
作用:仅将 %I 扩展到一个路径
扩展后:绝对路径 - 文件名(带扩展名) - 盘符(带冒号)
即, d:\cmd\02\1.txt => \cmd\02\
举例:
d:\cmd\02>dir /b
1.bat
1.txt
d:\cmd\02>for /f "delims=" %i in ('dir /b') do @echo %~pi
\cmd\02\
\cmd\02\
五, %~nI
作用:仅将 %I 扩展到一个文件名
即, (打印) 文件/目录 名字, 不带扩展名
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f "delims=" %i in ('dir /b') do @echo %~ni
dir
temp
六, %~xI
作用:仅将 %I 扩展到一个文件扩展名
即, (打印) 文件 的扩展名
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f %i in ('dir /b') do @echo %~xi
ECHO 处于打开状态。
.txt
七, %~sI
作用:扩展的路径只含有短名
即, 还是打印绝对路径
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f %i in ('dir /b') do @echo %~si
d:\cmd\03\dir
d:\cmd\03\temp.txt
八, %~aI
作用:将 %I 扩展到文件的文件属性
举例:
d:\cmd\03>dir /b
dir
temp.txt
d:\cmd\03>for /f %i in ('dir /b') do @echo %~ai
d--------
--a------
九, %~tI
作用:将 %I 扩展到文件的日期/时间
举例:
D:\cmd\03>dir /b
dir
temp.txt
// 打印文件建立的日期
D:\cmd\03>for /f %i in ('dir /b') do @echo %~ti
2013/07/12 16:54
2013/07/12 16:29
十, %~zI
作用:将 %I 扩展到文件的大小
举例:
D:\cmd\03>dir /b
dir
temp.txt
// 打印文件大小
D:\cmd\03>for /f %i in ('dir /b') do @echo %~zi
0
66
十一, %~$PATH:I
作用:查找列在路径环境变量的目录,并将 %I 扩展
即, 在 Path环境变量中, 查找指定字符串, 有则返回"="右边的值.
举例:
存在=>
D:\cmd\03>for /f "delims=" %i in ("notepad.exe") do @echo %~$path:i
C:\Windows\System32\notepad.exe
不存在=>
D:\cmd\03>for /f "delims=" %i in ("notepad123.exe") do @echo %~$path:i
ECHO 处于打开状态。
说明:
在 PATH变量里指定的路径里搜索 notepad.exe文件,
如果有 notepad.exe则会把他所在绝对路径打印出来,
没有就打印一个错误