[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求解一些批处理for语句的使用问题

本帖最后由 idos 于 2016-9-9 21:45 编辑

两个问题:
第一个:
  1. @echo off
  2. for %%i in ("C:Program Files\7-Zip\7z.exe\..") do (
  3. echo 文件所在文件夹:%%~nxi
  4. )
  5. pause
复制代码
这个代码为何会输出  7-zip??

第二个:
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3. echo,%%i
  4. )
  5. pause
复制代码
这段代码用的什么原理可以把a.txt文件空行清掉而不删除行首的空格或制表符?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

for默认删除空行,不删除其他空白符的行
%%~nxi 是n是文件名 x是后缀名  nx是文件名+后缀名 即7z.exe

TOP

回复 2# wskwfkbdn


    你看错了,结果是 7-Zip 而不是 7z.exe

TOP

回复 3# GNU


    看错  不代表我说的不对

TOP

回复 4# wskwfkbdn


    确实如此。2楼的两句话跟楼主的2个问题一点关系都没有,也是挺难得。

TOP

回复 5# GNU


    我说没有不对,文件名 扩展名 7z.exe  aaa.txt  告诉你命令的作用,for本来就可以过滤空行 ,只要没有什么特殊不可见字符一般都过滤了,如果不到,那你解释解释

TOP

1、这里的Crogram Files\7-Zip\7z.exe识别为目录,\..表示上一级目录,整句就是表示为C:Program Files\7-Zip\7z.exe该目录的上一级目录,也就是C:Program Files\7-Zip,经参数扩展%%~nxi为7-Zip
2、for /f 以换行符作为行的结尾,默认以空格、制表符分割行,空行只有回车换行符被丢弃,所以不会输出,"delims="表示取消默认分割符(没有指定任何分隔符),所以能输出行首不为;的带空格、制表符的整一行
1

评分人数

    • idos: 解释的很通俗易懂技术 + 1

TOP

其实个人觉得楼主给我提供了一个新思路,以前如果需要获取一个文件上级目录时,都是用替换\。都没考虑过这种写法。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 7# pcl_test


    +1
电脑就是你手机好扣字

TOP

回复 8# xxpinqz


for命令教程第7页有这个例子
http://bbs.bathome.net/thread-31727-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# pcl_test


    嗯嗯,可是为什么要强调行首不为;的呢?

TOP

好吧,我明白了

TOP

返回列表