标题: [文本处理] 求教批处理for命令delims的用法解释 [打印本页]
作者: llqcnw 时间: 2021-7-13 17:23 标题: 求教批处理for命令delims的用法解释
for /f "eol=| delims=|" %%i in 1.txt do ( 1.txt 文件里是很多个同名但存在在不同目录的文件的完整路径 使用这个命令后 可以获取到所有的文件名 请教一下, eol=| delims=| 这两个是什么意思?
作者: yakeyun 时间: 2021-7-13 17:35
回复 1# llqcnw
批处理for语句从入门到精通,可以参考:http://www.bathome.net/thread-2189-1-1.html
作者: llqcnw 时间: 2021-7-13 17:48
回复 2# yakeyun
看过了,但还是不明白把 | 作为分隔符是什么意思
作者: llqcnw 时间: 2021-7-13 17:50
回复 2# yakeyun
delims=| 这是把 | 作为分隔符使用吗?
作者: llqcnw 时间: 2021-7-13 18:00
回复 5# idwma
不太明白,我的那个txt里每一行是一个完整路径 比如d:\abc\3.txt 这样的
用 | 作为分隔符就可以提取出文件名,为什么
作者: yakeyun 时间: 2021-7-13 18:35
本帖最后由 yakeyun 于 2021-7-13 18:52 编辑
回复 5# llqcnw
涉及到路径的就需要放一部分内容出来看看规律,有规律就好办,不然不好批量处理。比如路径层数是否一致
作者: newswan 时间: 2021-7-13 18:54
没有数据,说个>>>>>>
作者: llqcnw 时间: 2021-7-13 19:53
回复 7# yakeyun
1.txt文件里的内容如下:
d:\Fwkp\Bin\3.txt
d:\Fwkp\Bin\skfp.djgl.bin\3.txt
d:\Fwkp\新建文件夹 (2)\3.txt
d:\Fwkp\新建文件夹 (3)\3.txt
d:\Fwkp\新建文件夹 (4)\3.txt
d:\原版\Bin\3.txt
d:\原版\Bin\skfp.djgl.bin\3.txt
d:\问题\Bin\3.txt
d:\问题\Bin\skfp.djgl.bin\3.txt
作者: llqcnw 时间: 2021-7-13 19:54
使用的命令如下:
setlocal enabledelayedexpansion
set n=1
for /f "eol=| delims=|" %%i in 1.txt do (
copy "%%i" "c:\3\3-!n!.txt"
set /a n=!n!+1
)
作者: qixiaobin0715 时间: 2021-7-13 20:43
回复 10# llqcnw
有点耍花腔的味道:
按你的代码修改,看一看显示的%%i是什么- @echo off
- for /f "eol=| delims=|" %%i in (1.txt) do echo,%%i
- pause
复制代码
代码这样写要规范些:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in (1.txt) do (
- set /a n+=1
- copy "%%i" "c:\3\3-!n!.txt"
- )
- pause
复制代码
作者: llqcnw 时间: 2021-7-13 20:50
回复 11# qixiaobin0715
好的,谢谢
我也是从其他地方借鉴来的命令,我感觉复杂了,想简化一下,但是没有搞懂那个 | 的用法,所以就来请教
作者: llqcnw 时间: 2021-7-13 20:56
本帖最后由 llqcnw 于 2021-7-13 21:03 编辑
回复 11# qixiaobin0715
代码非常好用,实现目的,而且很简单。
之前把问题想复杂了,之前的想法是 文件名保持不变进行复制,然后更名,看了你的代码后,才想起来,复制时就可以直接更名了。是我基本功太差了,感谢!
作者: qixiaobin0715 时间: 2021-7-13 21:06
回复 13# llqcnw
不需要去掉目录并且也不能去掉目录啊,试试这个,如果存在d:\Fwkp\Bin\3.txt的话:
copy d:\Fwkp\Bin\3.txt d:\test.txt
作者: llqcnw 时间: 2021-7-13 21:07
回复 14# qixiaobin0715
明白了,谢谢!
另外 还是想问一下 delims=| 是什么意思?
作者: qixiaobin0715 时间: 2021-7-13 21:19
回复 15# llqcnw
自己体会一下:- @echo off
- for /f "tokens=1-3 delims=|" %%i in ("abc|123|bcd") do (
- echo,%%i
- echo,%%j
- echo,%%k
- )
- pause
复制代码
作者: llqcnw 时间: 2021-7-13 21:27
回复 16# qixiaobin0715
这段代码我能看懂,因为 代码里三个字符串是用 | 分隔的,所以 delims=| 我能理解, 但是我的 1.txt 里的字符串里面都没有 | 所以我不理解 delims=| 是什么用处
作者: qixiaobin0715 时间: 2021-7-13 21:41
本帖最后由 qixiaobin0715 于 2021-7-13 21:47 编辑
回复 17# llqcnw
可以说基本没什么用,就是因为文本中不含字符|,才有一点用处,可防止路径中含有空格而默认在此处分隔,但使用"delims="更好。
体会下面2组代码- @echo off
- for /f "delims=|" %%i in ("abc 123 bcd") do echo,%%i
- pause
复制代码
- @echo off
- for /f %%i in ("abc 123 bcd") do echo,%%i
- pause
复制代码
作者: llqcnw 时间: 2021-7-13 21:43
回复 18# qixiaobin0715
明白了,谢谢!
作者: newswan 时间: 2021-7-13 23:03
- for /f "tokens=*" %%a in (1.txt) do (
- echo "%%a"
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |