找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32830|回复: 11

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

[复制链接]
发表于 2016-9-5 20:12:28 | 显示全部楼层 |阅读模式
本帖最后由 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文件空行清掉而不删除行首的空格或制表符?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-9-5 20:24:42 | 显示全部楼层
for默认删除空行,不删除其他空白符的行
%%~nxi 是n是文件名 x是后缀名  nx是文件名+后缀名 即7z.exe
发表于 2016-9-5 20:59:25 | 显示全部楼层
回复 2# wskwfkbdn


    你看错了,结果是 7-Zip 而不是 7z.exe
发表于 2016-9-5 21:36:47 | 显示全部楼层
回复 3# GNU


    看错  不代表我说的不对
发表于 2016-9-5 21:41:59 | 显示全部楼层
回复 4# wskwfkbdn


    确实如此。2楼的两句话跟楼主的2个问题一点关系都没有,也是挺难得。
发表于 2016-9-5 21:48:58 | 显示全部楼层
回复 5# GNU


    我说没有不对,文件名 扩展名 7z.exe  aaa.txt  告诉你命令的作用,for本来就可以过滤空行 ,只要没有什么特殊不可见字符一般都过滤了,如果不到,那你解释解释
发表于 2016-9-5 23:08:33 | 显示全部楼层
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技术 +1 收起 理由
idos + 1 解释的很通俗易懂

查看全部评分

发表于 2016-9-5 23:26:38 | 显示全部楼层
其实个人觉得楼主给我提供了一个新思路,以前如果需要获取一个文件上级目录时,都是用替换\。都没考虑过这种写法。
发表于 2016-9-6 05:35:38 | 显示全部楼层
回复 7# pcl_test


    +1
电脑就是你手机好扣字
发表于 2016-9-6 11:25:13 | 显示全部楼层
回复 8# xxpinqz


for命令教程第7页有这个例子
http://bbs.bathome.net/thread-31727-1-1.html
 楼主| 发表于 2016-9-8 20:26:55 | 显示全部楼层
回复 7# pcl_test


    嗯嗯,可是为什么要强调行首不为;的呢?
 楼主| 发表于 2016-9-9 19:17:03 | 显示全部楼层
好吧,我明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 12:38 , Processed in 0.022762 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表