| 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
『楼 主』:
 [已结]如何读取文本每一行中的指定字符串?
 
使用 LLM 解释/回答一下
  
d:\mp3.txt 
DATA("CLUB慢摇","http://www.xxx.cn/dj/慢摇舞曲/CLUB慢摇.mp3"); 
DATA("包房专用经典Club慢摇串烧","http://www.xxx.cn/dj/包房专用经典Club慢摇串烧.mp3"); 
DATA("MC龍魔猪9月激情开场","http://www.xxx.cn/dj/MC龍魔猪9月激情开场.mp3");
 DATA("aaaaa","http://www.xxx.cn/dj/aaaaa.mp3");
..................................................................... 
..................................................................... 
无数这样格式的行
 
现在我想提取并输出每行中的 http://www.xxx.cn/dj/aaaaa.mp3链接地址到d:\address.txt
 
批处理:
 @echo off 
set/p var=<d:\mp3.txt 
for /f "tokens=4" %%a in ("%var:"= %") do echo %%a >d:\address.txt 
pause>nul 
查看address.txt,只被输出第一行内容:
 http://www.xxx.cn/dj/慢摇舞曲/CLUB慢摇.mp3
 
何故?我想要的是mp3.txt中每行的链接地址。
 
新手,麻烦大家帮帮忙。
 谢谢10楼的朋友,问题解决。
 Last edited by HAT on 2008-12-6 at 11:56 ]  
 
    
 
  
 |   
 | 
  2008-12-6 09:11 | 
  
 | 
 | 
 
radem 
高级用户
 
     CMD感染者
  
 
积分 691 
发帖 383 
注册 2008-5-23 
状态 离线
 | 
 | 
  2008-12-6 09:14 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
 | 
  2008-12-6 09:16 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
搜索了一下论坛,改进后还是不行 
@echo off & setlocal EnableDelayedExpansion 
set/p var=<d:\mp3.txt 
for /f "tokens=4" %%a in ("%var:"= %") do ( 
echo %%a >d:\address.txt 
set /a n+=1 & if !n!==234 goto out 
) 
pause>nul 
:out 
echo.输出完成 
pause 
 
    
 
  
 |   
 | 
  2008-12-6 09:32 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
@for /f "delims=,) tokens=2" %%a in (d:\mp3.txt) do @>>d:\address.txt echo %%~a 
 Last edited by tireless on 2008-12-6 at 09:48 ]  
 
    
 
  
 |   
 | 
  2008-12-6 09:46 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
 | 
  2008-12-6 10:06 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
 | 
  2008-12-6 10:25 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
 | 
  2008-12-6 10:39 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
 | 
  2008-12-6 10:42 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
@echo off 
for /f "delims=, tokens=1,*" %%a in (d:\mp3.txt) do ( 
  set str=%%~b 
  >>d:\address.txt call echo.%%str:");=%% 
)
  
 
    
 
     此帖被 +2 点积分    点击查看详情    | 评分人:【 HAT 】 | 分数: +2 |   时间:2008-12-6 11:54 |  
  |   
 
 
  
 |   
 | 
  2008-12-6 11:03 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
 | 
  2008-12-6 11:08 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
@echo off 
for /f "delims=, tokens=1,*" %%a in (d:\mp3.txt) do ( 
  set str=%%~b 
  >>d:\address.txt call echo.%%str:");=%% 
)
 
对d:\mp3.txt中每一行的内容以,作为分割符,取第1列给 %%a ,其后的列都给 %%b,得到%%b的值为: http://www.xxx.cn/dj/aaaaa.xxx");去除");并输出到address.txt文本中。
 
理解了思路,但还想把CODE中几个我认为比较特殊的地方弄明白。 
set str=%%~b 
那个~是什么意思? 
call echo.%%str:");=%%是去除");的,可是我吧这句删了就不能运行了,为什么?
 
。。。学习  
 
    
 
  
 |   
 | 
  2008-12-6 11:31 | 
  
 | 
 | 
 
tireless 
银牌会员
 
     
 
  
  
积分 2025 
发帖 1122 
注册 2007-9-5 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
那个~是什么意思? 
另外,FOR 变量参照的替换已被增强。您现在可以使用下列 
选项语法: 
 
    ~I         - 删除任何引号("),扩充 %I 
    %~fI        - 将 %I 扩充到一个完全合格的路径名 
    %~dI        - 仅将 %I 扩充到一个驱动器号 
    %~pI        - 仅将 %I 扩充到一个路径 
    %~nI        - 仅将 %I 扩充到一个文件名 
    %~xI        - 仅将 %I 扩充到一个文件扩展名 
    %~sI        - 扩充的路径只含有短名 
    %~aI        - 将 %I 扩充到文件的文件属性 
    %~tI        - 将 %I 扩充到文件的日期/时间 
    %~zI        - 将 %I 扩充到文件的大小 
    %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩充 
                  到找到的第一个完全合格的名称。如果环境变量名 
                  未被定义,或者没有找到文件,此组合键会扩充到 
                  空字符串 
 
可以组合修饰符来得到多重结果: 
 
    %~dpI       - 仅将 %I 扩充到一个驱动器号和路径 
    %~nxI       - 仅将 %I 扩充到一个文件名和扩展名 
    %~fsI       - 仅将 %I 扩充到一个带有短名的完整路径名 
    %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 
                  到找到的第一个驱动器号和路径。 
    %~ftzaI     - 将 %I 扩充到类似输出线路的 DIR 
 
在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 
用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 
比较易读,而且避免与不分大小写的组合键混淆。 
call echo.%%str:");=%%是去除");的,可是我吧这句删了就不能运行了,为什么? 
去掉会提示“命令语法不正确。”。  
 
    
 
  
 |   
 | 
  2008-12-6 11:42 | 
  
 | 
 | 
 
15935643331 
初级用户
 
  
 
  
  
积分 42 
发帖 37 
注册 2008-12-5 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
完全明白了,谢谢!! 
>>d:\address.txt call echo.%%str:");=%% 
这句是完整的一句,去除指定字符后输出到address.txt 。 
 
    
 
  
 |   
 | 
  2008-12-6 11:51 | 
  
 |