注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

批处理中针对文件处理的特殊变量引用【文件路径扩充字符串】  

2017-04-05 12:16:13|  分类: 操作系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
“文件路径扩充字符串”这个词汇来自于微软自己的定义,意思就是针对表示文件路径的字符串来进行特殊的处理,其实也可以把它看做是一种特殊的变量引用【%号作为变量引用还有一种特殊形式,那就是对形式参数的引用】。具体功能选项罗列如下[这里的I可选值有0-9]:
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名【DOS8位文件短名】
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
以上相关的参数还可以随意组合来得到想要的结果:
%~dpI - 仅将 %I 扩充到一个驱动器号和路径
%~nxI - 仅将 %I 扩充到一个文件名和扩展名
%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
%~ftzaI - 将 %I 扩充到类似DIR命令执行结果
下面再用具体的代码来给大家看下效果【将如下代码保存为bat文件,然后将文件或目录拖动到文件上】:

@echo off
echo 输入文件参数:%1
REM 去掉引号,如果输入的文件参数带引号
echo 输入文件参数:%~1
echo 文件所在盘符:%~d1
echo 文件所在路径:%~p1
echo 文件名:%~n1
echo 文件DOS8位文件短名:%~s1
echo 文件扩展名:%~x1
REM 如果需要获取不带.的扩展名请使用如下:
SET ext=%~x1
if "%ext%"=="" (echo 文件扩展名:)else (echo 文件扩展名:%ext:~1,3%)
REM 以上截取结果并不十分精确,请使用如下代码来获取
if "%ext%"=="" (echo 文件扩展名:)else (echo 文件扩展名:%ext:.=%)
echo 文件属性:%~a1
echo 文件修改时间:”%~t1
echo 文件大小:”%~z1
REM 组合使用
echo 文件名:%~nx1
echo 文件绝对路径:%~f1
REM 这个命令跟下面二个命令起同样效果
echo 文件绝对路径:%~dpnx1
echo 文件绝对路径:%~df1
echo 文件路径:%~dp1
REM 短名
echo 文件短名路径:%~fs1
echo 文件信息输出:%~ftza1
REM 判断文件存在与否
if exist %~df1 echo 文件或目录%~df1是存在的!
REM 根据文件扩展名来判断是否目录,此判断并不十分准确
if "%~x1"=="" (echo %~df1是目录! )else ( echo %~df1是文件! )
REM 这里有更好的办法用文件属性来判断目录
set dir=%~a1
set isdir=%dir:~0,1%
if "%isdir%"=="d" (echo %~df1是目录! )else ( echo %~df1是文件! )
pause

将文件拖动到此BAT文件上运行结果如下:
批处理中针对文件处理的特殊变量【文件路径扩充字符串】 - sinsunson - 天朝布衣田中码农参上
 
将目录拖动到此BAT文件上运行结果如下:
批处理中针对文件处理的特殊变量【文件路径扩充字符串】 - sinsunson - 天朝布衣田中码农参上
如果需要更多的参数说明,请使用for /?去察看,这里的脚本中说明下:
%ext:~1,3%是用来从扩展名中位置1开始截取3个字母【这种取法并不是十分精确的,对4位扩展名的就不行】
%ext:.=%则是将扩展名的符号.替换成空【这个精确】
exist则是用来判断文件或目录是否存在。
有了以上的例子,相信大家从此后就可以轻松掌握这些特殊变量的用法了。如果需要处理多个输入文件参数,可以参考之前的文章《解决批处理接收9个以上的参数会有遗漏的问题》。



  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018