中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 12:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批量按歌手名建立目录把歌曲移动到目录中 查看 2,733 回复 36
楼 主 [求助]批量按歌手名建立目录把歌曲移动到目录中 发表于 2008-08-20 13:43 ·  日本 东京都 千代田区 KDDI公司
初级用户
积分 32
发帖 15
注册 2007-08-02 12:44
19年会员
UID 94499
性别 男
状态 离线
现在有几千首歌,文件名是这样的
王力宏 - Forever Love.mp3
王力宏 - I'm Lovin'it.mp3
万芳 - 不换.mp3
现在想根据文件名中的歌手名分别建立文件夹,并把歌曲移到相对应的歌手的目录中去。该怎么来书写此批处理?请高手不吝执教。非常感谢。
2 发表于 2008-08-20 13:56 ·  中国 广东 广州 天河区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
@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 发表于 2008-08-20 14:00 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线

for /f "tokens=1* delims=-" %%i in ('dir/b/a-d *.mp3') do (
md %%i 2>nul&copy "%%i-%%j" %%i
)

有必要可以把copy改成move

[ Last edited by huahua0919 on 2008-8-20 at 02:01 PM ]
4 发表于 2008-08-20 14:05 ·  日本 东京都 千代田区 KDDI公司
初级用户
积分 32
发帖 15
注册 2007-08-02 12:44
19年会员
UID 94499
性别 男
状态 离线
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 发表于 2008-08-20 14:07 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
2楼玩大了。
6 发表于 2008-08-20 14:09 ·  中国 广东 广州 天河区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
'dir/b/a-d *.mp3'

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

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

3, 按你的代码应该使用 move指令而不是copy。因为你没有del的操作。。
知,不觉多。不知,乃求知
7 发表于 2008-08-20 14:11 ·  中国 广东 广州 天河区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
别哭,现在你什么操作都不要做。。

我给你东西。。刚才的代码写错点?不过歌应该被copy到目录下了呀?
知,不觉多。不知,乃求知
8 发表于 2008-08-20 14:11 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
我保险求保险,不在我这边运行,什么都难说。所以说你写的代码虽然你可能执行成功但他却出了问题
1.用.mp3做文件夹更定不会错
2用2 >nul的效率比 if exist的效率高
3就是我上面说的
9 发表于 2008-08-20 14:13 ·  中国 广东 广州 天河区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
if exist "%cd%\%%i" del "%%i-%%j"

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

你的qq是多少?msn也行?
知,不觉多。不知,乃求知
10 发表于 2008-08-20 14:14 ·  日本 东京都 千代田区 KDDI公司
初级用户
积分 32
发帖 15
注册 2007-08-02 12:44
19年会员
UID 94499
性别 男
状态 离线
目录都建好了,但是文件都没了,文件夹都是空的。
11 发表于 2008-08-20 14:18 ·  日本 东京都 千代田区 KDDI公司
初级用户
积分 32
发帖 15
注册 2007-08-02 12:44
19年会员
UID 94499
性别 男
状态 离线
Originally posted by huahua0919 at 2008-8-20 02:00 PM:

for /f "tokens=1* delims=-" %%i in ('dir/b/a-d *.mp3') do (
md %%i 2>nul&copy "%%i-%%j" %%i
)

有必要可以把copy改成move

[ Last edited by hu ...

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

不过还是要谢谢2位。
12 发表于 2008-08-20 14:19 ·  中国 广东 广州 天河区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
哎。不好意思。

已复制 1 个文件。

有无这个提示??

看来以后代码全加上 if errorlevel
知,不觉多。不知,乃求知
13 发表于 2008-08-20 14:20 ·  日本 东京都 千代田区 KDDI公司
初级用户
积分 32
发帖 15
注册 2007-08-02 12:44
19年会员
UID 94499
性别 男
状态 离线
正在处理第!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 发表于 2008-08-20 14:21 ·  中国 江苏 苏州 吴江区 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
那就是你的文件名结构有问题不能够有特殊字符,不然就成空了,所以我就用copy的原因了
15 发表于 2008-08-20 14:21 ·  中国 广东 广州 天河区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
既然有提示?怎么会文件夹里全是空的呢?
知,不觉多。不知,乃求知
论坛跳转: