中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 14:39
47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]批量按歌手名建立目录把歌曲移动到目录中
可打印版本  2,746 / 36
第1楼 iuiu 发表于 2008-08-20 13:43
初级用户 发帖 15 积分 32
[求助]批量按歌手名建立目录把歌曲移动到目录中
现在有几千首歌,文件名是这样的
王力宏 - Forever Love.mp3
王力宏 - I'm Lovin'it.mp3
万芳 - 不换.mp3
现在想根据文件名中的歌手名分别建立文件夹,并把歌曲移到相对应的歌手的目录中去。该怎么来书写此批处理?请高手不吝执教。非常感谢。
第2楼 flyinspace 发表于 2008-08-20 13:56
银牌会员 发帖 517 积分 1,206
@echo off & setlocal EnableDelayedExpansion
set "Total=0"
for /f "delims=- tokens=1,* " %%i in (' dir /b *.mp3') do (
set /a "Total+=1"
echo 正在处理第!Total!首歌:
if not exist "%%i" md "%%i"
if exist "%%i-%%j" copy "%%i-%%j" "%cd%\%%i"
if exist "%cd%\%%i\%%i-%%j" del "%%i-%%j"
)
echo 处理完毕,共处理首歌~!&pause>nul

严谨的书写方式应该如上。。。。

[ Last edited by flyinspace on 2008-8-20 at 02:40 PM ]
第3楼 huahua0919 发表于 2008-08-20 14:00
银牌会员 发帖 780 积分 1,608

有必要可以把copy改成move

[ Last edited by huahua0919 on 2008-8-20 at 02:01 PM ]
第4楼 iuiu 发表于 2008-08-20 14:05
初级用户 发帖 15 积分 32
Originally posted by flyinspace at 2008-8-20 01:56 PM:
@echo off & setloacl EnableDelayedExpansion
set "Total=0"
for /f "delims=- tokens=1,* " %%i in (' dir /b *.mp3') do (
set /a "Total+=1"
echo 正在处 ...


老大,目录是有了,歌都没了,欲哭无泪。
第5楼 huahua0919 发表于 2008-08-20 14:07
银牌会员 发帖 780 积分 1,608
2楼玩大了。
第6楼 flyinspace 发表于 2008-08-20 14:09
银牌会员 发帖 517 积分 1,206
'dir/b/a-d *.mp3'

1。 不明白,既然已经是按。mp3排列了。还要 /a-d做什么?
难道还要排除 *.mp3 的文件夹?

2。 与其大量的md操作还不如验证一下。

3, 按你的代码应该使用 move指令而不是copy。因为你没有del的操作。。
第7楼 flyinspace 发表于 2008-08-20 14:11
银牌会员 发帖 517 积分 1,206
别哭,现在你什么操作都不要做。。

我给你东西。。刚才的代码写错点?不过歌应该被copy到目录下了呀?
第8楼 huahua0919 发表于 2008-08-20 14:11
银牌会员 发帖 780 积分 1,608
我保险求保险,不在我这边运行,什么都难说。所以说你写的代码虽然你可能执行成功但他却出了问题
1.用.mp3做文件夹更定不会错
2用2 >nul的效率比 if exist的效率高
3就是我上面说的
第9楼 flyinspace 发表于 2008-08-20 14:13
银牌会员 发帖 517 积分 1,206
if exist "%cd%\%%i" del "%%i-%%j"

应该是: if exist "%cd%\%%i\%%i-%%j" del "%%i-%%j"

你的qq是多少?msn也行?
第10楼 iuiu 发表于 2008-08-20 14:14
初级用户 发帖 15 积分 32
目录都建好了,但是文件都没了,文件夹都是空的。
第11楼 iuiu 发表于 2008-08-20 14:18
初级用户 发帖 15 积分 32
Originally posted by huahua0919 at 2008-8-20 02:00 PM:

有必要可以把copy改成move

[ Last edited by hu ...

这位老大的我也试过了,现在问题是目录是建好了,但多了很多额外的空目录。
原来302个文件1.6g左右,copy过去以后只有902m。

不过还是要谢谢2位。
第12楼 flyinspace 发表于 2008-08-20 14:19
银牌会员 发帖 517 积分 1,206
哎。不好意思。

已复制 1 个文件。

有无这个提示??

看来以后代码全加上 if errorlevel
第13楼 iuiu 发表于 2008-08-20 14:20
初级用户 发帖 15 积分 32
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
正在处理第!Total!首歌:
已复制 0 个文件。
处理完毕,共处理首歌~!

[ Last edited by iuiu on 2008-8-20 at 02:25 PM ]
第14楼 huahua0919 发表于 2008-08-20 14:21
银牌会员 发帖 780 积分 1,608
那就是你的文件名结构有问题不能够有特殊字符,不然就成空了,所以我就用copy的原因了
第15楼 flyinspace 发表于 2008-08-20 14:21
银牌会员 发帖 517 积分 1,206
既然有提示?怎么会文件夹里全是空的呢?
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023