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

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

for /f "eol=| delims=|" %%i in 1.txt do (                1.txt  文件里是很多个同名但存在在不同目录的文件的完整路径                   使用这个命令后 可以获取到所有的文件名            请教一下,  eol=|      delims=|    这两个是什么意思?

回复 1# llqcnw


批处理for语句从入门到精通,可以参考:http://www.bathome.net/thread-2189-1-1.html

TOP

回复 2# yakeyun


    看过了,但还是不明白把   |  作为分隔符是什么意思

TOP

回复 2# yakeyun


    delims=|    这是把   |  作为分隔符使用吗?

TOP

回复 5# idwma


    不太明白,我的那个txt里每一行是一个完整路径  比如d:\abc\3.txt   这样的      
用  |   作为分隔符就可以提取出文件名,为什么

TOP

本帖最后由 yakeyun 于 2021-7-13 18:52 编辑

回复 5# llqcnw


涉及到路径的就需要放一部分内容出来看看规律,有规律就好办,不然不好批量处理。比如路径层数是否一致

TOP

没有数据,说个>>>>>>

TOP

回复 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

TOP

使用的命令如下:



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
)

TOP

回复 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
复制代码

TOP

回复 11# qixiaobin0715


    好的,谢谢

我也是从其他地方借鉴来的命令,我感觉复杂了,想简化一下,但是没有搞懂那个  |  的用法,所以就来请教

TOP

本帖最后由 llqcnw 于 2021-7-13 21:03 编辑

回复 11# qixiaobin0715


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


之前把问题想复杂了,之前的想法是 文件名保持不变进行复制,然后更名,看了你的代码后,才想起来,复制时就可以直接更名了。是我基本功太差了,感谢!

TOP

回复 13# llqcnw
不需要去掉目录并且也不能去掉目录啊,试试这个,如果存在d:\Fwkp\Bin\3.txt的话:
copy d:\Fwkp\Bin\3.txt d:\test.txt

TOP

回复 14# qixiaobin0715


    明白了,谢谢!   

另外 还是想问一下  delims=|   是什么意思?

TOP

回复 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
复制代码

TOP

返回列表