本帖最后由 pcl_test 于 2016-11-7 20:05 编辑
回复 2# pcl_test
版主你好,写了个批处理现在应该可以达到效果。
文本123.txt内容如下,文本中以【/】结束的都表示的是目录。
批处理代码:- @echo off
- setlocal enabledelayedexpansion
- findstr "deleting" 123.txt > tmp.txt
- for /f "tokens=1,*" %%i in (tmp.txt) do (
- set str=%%j
- :: echo !str:~-1!
- if not "!str:~-1!"=="/" echo %%j
- )
- pause
复制代码 得到结果如下:- test.com/web/娴嬭瘯 鍖呭惈绌烘牸/涓枃鍚?txt
- test.com/web/x.y/x.y.txt
- test.com/web/new file/test.txt
- test.com/web/dd/fff .txt
- test.com/web/index.php
- test.com/web/index.html
- 请按任意键继续. . .
复制代码 1.先使用findstr在123.txt中查找包含【deleting】的行重定向到tmp.txt文件中;
2.然后使用for循环,以默认空格分隔,当切分完第一节之后,切分动作不再继续下去,因为 tokens=1,* 中,星号前面紧跟的是数字1;第一节字符串被切分完之后,其余部分字符串不做任何切分,整体作为第二节字符串,这样,一行就被切分成了两节,分别被变量%%i和变量%%j接收。然后就是判断最后一个字符是不是【/】,如果不是就认为是文件。
虽然可以实现了,对批处理不是很熟悉,请教版主在此例中分辨路径是文件还是目录还有其他方法吗?(结果中的中文乱码可能是因为123.txt文件为UTF-8编码格式,但是findstr重定向后的文件也是UTF-8格式?) |