![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 06:18 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [解决]音乐列表程序,遇见有空格的歌曲文件名出错 |
| 可打印版本 901 / 7 |
| 第1楼 ehejia | 发表于 2008-01-05 03:15 |
| 新手上路 发帖 7 积分 16 | |
|
[解决]音乐列表程序,遇见有空格的歌曲文件名出错 我写的一个关于服务器音乐列表更新程序 但是遇见有空格的文件名就会出错
代码如下: 这个就是没有空格文件名做的出列表 \\gameserver\mp3\1月\wheneverwherever.wma \\gameserver\mp3\1月\有没有人告诉你.wma 这个样子就是有空格文件名出错的样子 \\gameserver\mp3\1月\whenever \\gameserver\mp3\1月\有没有人告诉你.wma [ Last edited by ehejia on 2008-1-13 at 10:40 AM ] |
|
| 第2楼 lxmxn | 发表于 2008-01-05 03:16 |
| 版主 发帖 4,938 积分 11,386 | |
|
路径两边加双引号。
|
|
| 第3楼 ehejia | 发表于 2008-01-05 03:29 |
| 新手上路 发帖 7 积分 16 | |
|
请教一下双引号加哪里
这个程序是用DIR命令列出本地硬盘的音乐路径\文件名 用FOR 循环读取每一行然后用 set替换的 但是有遇见带空格的文件名就会跳过空格后面那一段 请问一下用FOR读取出来的变量怎么加上双引号? [ Last edited by ehejia on 2008-1-5 at 03:31 AM ] |
|
| 第4楼 kidzgy | 发表于 2008-01-05 10:57 |
| 中级用户 发帖 129 积分 262 | |
|
整个路径首尾加" 双引号。
就是一般没有变量都特指某个文件的话,也没有空白间隔的话,可以不加。 可是变量的话,在最前面的%前面加上" 在最后面的%加上" (对于你这代码来说~) %mp3path%\%mp3tempname% 变为 "%mp3path%\%mp3tempname%" 注意的是,双引号必须是英文标点下输入。中文标点视为中文字。因为电脑是外国造的,当然是以E文为准了~ |
|
| 第5楼 ehejia | 发表于 2008-01-12 23:10 |
| 新手上路 发帖 7 积分 16 | |
|
很抱歉 这几天没时间上网现在才来
"%mp3path%\%mp3tempname%"在DOS里是可以识别的 我的程序出错是出在用FOR语句读取文件名的时候 遇见有空格的文件名 空格后面那一半就会丢失。。 这个是我生成的临时文件 D:\mp3\Through The Years And Far Away.mp3 D:\mp3\隐形的翅膀.wma 可以看出 在这里的时候是没有问题的 列表就是替换的时候用FOR语句读取temp文件 我把回显打开看了一下就在SET的时候空格后面的名字就不见了 不清楚是不是ROF语句会跳过空格 \\192.168.1.6\mp3\Through \\192.168.1.6\mp3\隐形的翅膀.wma 这个是转换后的文件名 我试过加上引号 %%i上加引号是程序会错误 路径系统是没有错误的加与不加也没有多大的关系 我把回显打开看了 也就是这句的时候已经把空格后的名字给丢掉了 for /f %%i in (%mp3path%\%mp3tempname%) do ( set var=%%i set var=%%i 在Shell 里就变成 set var=Through 也就是这里的时候用FOR语句读取出来就已经没空格后的文件名了 我在set var="%%i" 加上引号在SHELL里就变成 set var="Through" 请问下是FOR语句会跳过空格后的内容吗 [ Last edited by ehejia on 2008-1-12 at 11:17 PM ] |
|
| 第6楼 fastslz | 发表于 2008-01-12 23:40 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
for /f "delins=*" %%i in (%mp3path%\%mp3tempname%) do ......
|
|
| 第7楼 everest79 | 发表于 2008-01-13 03:10 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
pushd d:\mp3 >D:\mp3\music.m3u
for /f "tokens=2* delims=\" %%a in ('dir /b /s *.mp3;*.wma') do echo \\gameserver\mp3\%%b >>D:\mp3\music.m3u |
|
| 第8楼 ehejia | 发表于 2008-01-13 10:39 |
| 新手上路 发帖 7 积分 16 | |
|
感谢大家 好用了,原来是FOR语句我没有加参数 导致空格后面的名字自动被忽略。。
[ Last edited by ehejia on 2008-1-13 at 10:41 AM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |