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

[文本处理] 求教批处理for命令delims的用法解释

[复制链接]
发表于 2021-7-13 17:23:11 | 显示全部楼层 |阅读模式
for /f "eol=| delims=|" %%i in 1.txt do (                1.txt  文件里是很多个同名但存在在不同目录的文件的完整路径                   使用这个命令后 可以获取到所有的文件名            请教一下,  eol=|      delims=|    这两个是什么意思?
发表于 2021-7-13 17:35:37 | 显示全部楼层
回复 1# llqcnw


批处理for语句从入门到精通,可以参考:http://www.bathome.net/thread-2189-1-1.html
 楼主| 发表于 2021-7-13 17:48:59 | 显示全部楼层
回复 2# yakeyun


    看过了,但还是不明白把   |  作为分隔符是什么意思
 楼主| 发表于 2021-7-13 17:50:35 | 显示全部楼层
回复 2# yakeyun


    delims=|    这是把   |  作为分隔符使用吗?
 楼主| 发表于 2021-7-13 18:00:20 | 显示全部楼层
回复 5# idwma


    不太明白,我的那个txt里每一行是一个完整路径  比如d:\abc\3.txt   这样的      
用  |   作为分隔符就可以提取出文件名,为什么
发表于 2021-7-13 18:35:53 | 显示全部楼层
本帖最后由 yakeyun 于 2021-7-13 18:52 编辑

回复 5# llqcnw


涉及到路径的就需要放一部分内容出来看看规律,有规律就好办,不然不好批量处理。比如路径层数是否一致
发表于 2021-7-13 18:54:48 | 显示全部楼层
没有数据,说个>>>>>>
 楼主| 发表于 2021-7-13 19:53:08 | 显示全部楼层
回复 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
 楼主| 发表于 2021-7-13 19:54:29 | 显示全部楼层
使用的命令如下:



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
)
发表于 2021-7-13 20:43:09 | 显示全部楼层
回复 10# llqcnw
有点耍花腔的味道:
按你的代码修改,看一看显示的%%i是什么
  1. @echo off
  2. for /f "eol=| delims=|" %%i in (1.txt) do echo,%%i
  3. pause
复制代码
代码这样写要规范些:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (1.txt) do (
  4.     set /a n+=1
  5.     copy "%%i" "c:\3\3-!n!.txt"
  6. )
  7. pause
复制代码
 楼主| 发表于 2021-7-13 20:50:37 | 显示全部楼层
回复 11# qixiaobin0715


    好的,谢谢

我也是从其他地方借鉴来的命令,我感觉复杂了,想简化一下,但是没有搞懂那个  |  的用法,所以就来请教
 楼主| 发表于 2021-7-13 20:56:34 | 显示全部楼层
本帖最后由 llqcnw 于 2021-7-13 21:03 编辑

回复 11# qixiaobin0715


    代码非常好用,实现目的,而且很简单。   


之前把问题想复杂了,之前的想法是 文件名保持不变进行复制,然后更名,看了你的代码后,才想起来,复制时就可以直接更名了。是我基本功太差了,感谢!
发表于 2021-7-13 21:06:09 | 显示全部楼层
回复 13# llqcnw
不需要去掉目录并且也不能去掉目录啊,试试这个,如果存在d:\Fwkp\Bin\3.txt的话:
copy d:\Fwkp\Bin\3.txt d:\test.txt
 楼主| 发表于 2021-7-13 21:07:31 | 显示全部楼层
回复 14# qixiaobin0715


    明白了,谢谢!   

另外 还是想问一下  delims=|   是什么意思?
发表于 2021-7-13 21:19:12 | 显示全部楼层
回复 15# llqcnw
自己体会一下:
  1. @echo off
  2. for /f "tokens=1-3 delims=|" %%i in ("abc|123|bcd") do (
  3.     echo,%%i
  4.     echo,%%j
  5.     echo,%%k
  6. )
  7. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 20:07 , Processed in 0.035587 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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