在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 先把FOR的变量全部列出来: ~I - 删除任何引号("),扩展 %I
比如:FOR /F %%z IN ('set') DO @echo %%z 这里我们代入的变量名是z那么我们就要把那个I改成z,例如%~fI改为%~fz 至于前面的%~p这样的内容就是语法了! 好开始讲解: 一、 ~I - 删除任何引号("),扩展 %I 这个变量的作用就如他的说明,删除引号! 可建立个BAT文件代码如下: @echo off echo ^"1111>temp.txt echo "2222">>temp.txt echo 3333^">>temp.txt echo "4444"44>>temp.txt echo ^"55"55"55>>temp.txt rem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格 FOR /F "delims=" %%i IN (temp.txt) DO echo %%~i pause del temp.txt 执行后,我们看CMD的回显如下: 和之前temp.txt中的内容对比一下,我们会发现第1、2、5行的引号都消失了,这就是删除引号~i的作用了! 二、 %~fI - 将 %I 扩展到一个完全合格的路径名 看例子: FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi pause 执行后就会显示以下内容: 通过对比,我们很容易就看出没有路径了,这就是"将 %I 扩展到一个完全合格的路径名"的作用也就是如果%i变量的内容是一个文件名的话,他就会把这个文件所在的绝对路径打印出来,而不只单单打印一个文件名,自己动手动实验下就知道了! 三、 %~dI - 仅将 %I 扩展到一个驱动器号 看例子: FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di pause 执行后我CMD里显示如下 四、 %~pI - 仅将 %I 扩展到一个路径 这个用法和上面一样,他只打印路径不打印文件名字 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~pi pause 我就不打结果了,大家自己复制代码看结果吧,下面几个都是这么个用法,代码给出来,大家自己看结果吧! 五、 %~nI - 仅将 %I 扩展到一个文件名 只打印文件名字 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni pause 六、 %~xI - 仅将 %I 扩展到一个文件扩展名 只打印文件的扩展名 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi pause 七、 %~sI - 扩展的路径只含有短名 打印绝对短文件名 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~si pause 八、 %~aI - 将 %I 扩展到文件的文件属性 打印文件的属性 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai pause 九、 %~tI - 将 %I 扩展到文件的日期/时间 打印文件建立的日期 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ti pause 十、 %~zI - 将 %I 扩展到文件的大小 打印文件的大小 FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi pause 上面例子中的"delims=="可以改为"delims=",即不要分隔符 十一、 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串 这是最后一个,和上面那些都不一样,我单独说说! 然后在把这些代码保存为批处理,放在桌面。 @echo off FOR /F "delims=" %%i IN (“notepad.exe”) DO echo %%~$PATH:i pause 龙卷风补充:上面代码显示结果为C:\WINDOWS\system32\notepad.exe 他的意思就在PATH变量里指定的路径里搜索notepad.exe文件,如果有notepad.exe则会把他所在绝对路径打印出来,没有就打印一个错误! |
请发表评论