中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 21:27
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]if not exist在For中出错
可打印版本  1,170 / 10
第1楼 userwww 发表于 2007-12-09 18:25
初级用户 发帖 57 积分 136
[求助]if not exist在For中出错
歌名.Txt是一个不带扩展名的歌名库,我想找出当前目录下(包括子目录)的没有对应的歌词并生成在 文本.txt 中,但执行下列P 后,得出的结果与无 @if not exist %%a(红色那段)所得的结果一样 请指教


for /f %%i in (歌名.txt) do (
for /f %%a in ('dir/s/b "%%i.lrc"') do (
@if not exist %%a @echo %%i>>文本.txt
)
)


新问题是二楼的P会忽略空格,请教大家

[ Last edited by userwww on 2007-12-14 at 05:14 PM ]
第2楼 26933062 发表于 2007-12-09 18:44
银牌会员 发帖 879 积分 2,268
试试?
:
第3楼 userwww 发表于 2007-12-10 20:22
初级用户 发帖 57 积分 136
解决问题,谢谢!:P
第4楼 userwww 发表于 2007-12-14 17:11
初级用户 发帖 57 积分 136
我在二楼的P上加了红色的那部分,现在的问题,比如:有

中国人.MP3
中 国人.Lrc

它会忽略空格,认为两者的文件名为一样的,我在*.lrc上加了双引号也不行,请教大家:


@echo off&setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir/b/s/a-d *.lrc') do (
set num=%%~na
set num=!num: =!
set !num!=a
)
for /f "delims=" %%i in (歌名.txt) do (
set var=%%i
set var=!var: =!
if not defined !var! echo %%i>>文本.txt
)
pause
第5楼 26933062 发表于 2007-12-14 18:55
银牌会员 发帖 879 积分 2,268
那就换个方法
:

[ Last edited by 26933062 on 2007-12-14 at 06:58 PM ]
第6楼 userwww 发表于 2007-12-14 20:25
初级用户 发帖 57 积分 136
五楼的代码在我的机子上运行没反应,我再试试看是什么原因
第7楼 fastslz 发表于 2007-12-14 22:58
铂金会员 发帖 2,315 积分 5,493 来自 上海
如果歌名和歌词名字不对应尝试*中*国*人*.Lrc通配符方式遍历文件



如果更模糊点遍历文件把set /a n="n+1"替换成set /a n="n+2" 即*中*人*.Lrc

也可以用这个代码ren歌词和歌名同名
第8楼 qzwqzw 发表于 2007-12-14 23:21
银牌会员 发帖 636 积分 2,343
感觉楼主的问题很奇怪
不知道是不是重新编辑的问题
因为从我来看
@if not exist 纯属画蛇添足了

分析:
第二句for已经针对每个歌名查找了对应歌词的存在
如果能执行到第二句for之内
则说明对应歌名的歌词文件必然存在
那么再加if not exist的判断
就只能使后面的echo始终无法执行
最后得到一个空结果

为此我用你的代码进行了简单的测试
使用if not exist得到空结果,与不使用if not exist并不一致
所以,你的两层for的嵌套用法本就是错误的

实际上,一句话就可以解决问题:

for /f "delims=" %%i in (歌名.txt) do dir /a/s/b "%%i.lrc" || echo %%i >> 文本.txt

也可以在命令行执行:
for /f "delims=" %i in (歌名.txt) do dir /a/s/b "%i.lrc" || echo %i >> 文本.txt
第9楼 fastslz 发表于 2007-12-14 23:49
铂金会员 发帖 2,315 积分 5,493 来自 上海
奇怪不能修改7楼帖子了,%newvar%*.lrc忘了加""自己改一下
第10楼 terse 发表于 2007-12-15 00:40
银牌会员 发帖 946 积分 2,404
这样行吗


发后才知道有了

[ Last edited by terse on 2007-12-15 at 12:42 AM ]
第11楼 26933062 发表于 2007-12-15 00:50
银牌会员 发帖 879 积分 2,268
到底功力深厚,佩服。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023