中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]文件移动到含该文件名字符的批处理?
« [1] [2] »
作者:
标题: [已结]文件移动到含该文件名字符的批处理? 上一主题 | 下一主题
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『楼 主』:  [已结]文件移动到含该文件名字符的批处理?

各位老大好。

本人有个KTV歌库需要重新归类,把一个目录下的文件移动到含文件名字符文件夹目录下(目录已批量建好)。
如:
目录名:张学友
歌曲名:张学友-夕阳醉了.wmv
                ……
        张学友-心如刀割.wmv


要求把“张学友-夕阳醉了.wmv……张学友-心如刀割.wmv”等文件移动到张学友目录下。当然还有N个其他歌手的歌曲。

求助各位老大们!!谢谢了。

[ Last edited by HAT on 2008-10-27 at 14:12 ]

2008-10-25 23:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  


假设批量建立的目录是在d:\music下
@echo off
for /f "delims=" %%a in ('dir /s /a-d /b d:\*.wmv') do (
     for /f "delims=-" %%i in ("%%~na") do move /y "%%a" d:\music\%%i\
)
echo 搞定了!&pause>nul




批处理之家新域名:www.bathome.net
2008-10-25 23:59
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 3 楼』:  


@echo off
cd /d "d:\music\"
for /f "delims=" %%a in ('dir /a:d /b') do (
  move /y "%%a*" "%%a" >nul 2>nul
)
以上代码适用于文件不存在于子文件夹中。请问楼主,歌曲文件有在子文件夹中吗?

如果存在于子文件夹中,用下面的:
@echo off
cd /d "D:\music\"
for /f "delims=" %%a in ('dir /a:d /b') do (
  for /f "delims=" %%b in ('dir /s /a:-d /b "%%a*" 2^>nul') do (
    move "%%b" "%%a" >nul 2>nul
  )
)
[ Last edited by tireless on 2008-10-26 at 01:47 ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 tang0826 分数: +1  时间:2008-10-27 13:43


2008-10-26 01:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 4 楼』:  

谢谢老大们。我去试试

2008-10-26 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 5 楼』:  

如果该目录下的空歌手目录没有建立,怎么用一个批量文件先建立歌手目录后移动相应文件到相应歌手目录?再次感谢!!

[ Last edited by tang0826 on 2008-10-26 at 22:04 ]

2008-10-26 22:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 6 楼』:  

疑问:
1.文件有在子文件夹中吗?

2.文件名都是这种规则?

张学友-夕阳醉了.wmv
周杰伦-彩虹.mp3

(短横线 -是全角的?)

2008-10-26 22:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 7 楼』:  

有子文件夹,文件名全都改为了全角短横线的。

谢谢!!

2008-10-26 22:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  


@echo off
cd /d "D:\music\"
for /f "delims=-" %%a in ('dir /s /a:-d /b') do (
  md "%%~na" 2>nul
  move "%%~a*" "%%~na" 2>nul >nul
)


   此帖被 +1 点积分    点击查看详情   
评分人:【 tang0826 分数: +1  时间:2008-10-27 13:43


2008-10-26 23:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by tireless at 2008-10-26 11:07 PM:
[code]@echo off
cd /d "D:\music\"
for /f "delims=-" %%a in ('dir /s /a:-d /b') do (
  md "%%~na" 2>nul
  move "%%~a*" "%%~na" 2>nul > ...

这段代码没有成功,老大!

2008-10-27 13:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 10 楼』:  Re 9 楼

执行结果是什么?替换了其中的 D:\music\ 吗?

2008-10-27 13:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 11 楼』:  

结果是产生一个“%~na”的空目录。

2008-10-27 13:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 12 楼』:  

请问你替换了其中的 D:\music\ 吗?这个要换成你的那个音乐文件目录。

2008-10-27 13:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 13 楼』:  

是替换了的,G:\KTV\

2008-10-27 13:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 14 楼』:  

以下是我做的测试:

执行批处理前的文件分布:

G:\KTV>tree /f
卷 文件 的文件夹 PATH 列表
卷序列号码为 000007C0 02C4:B98C
G:.
│  周杰伦- 魔杰座-11 稻香.mp3

├─2
│      林俊杰 -江南.wmv

└─3
    │  蔡依林-love love love.mp3
    │
    └─新建文件夹
            林俊杰 - - 就是我.mp3

执行批处理后的文件分布:

G:\KTV>tree /f
卷 文件 的文件夹 PATH 列表
卷序列号码为 000007C0 02C4:B98C
G:.
├─2
├─3
│  └─新建文件夹
├─周杰伦
│      周杰伦- 魔杰座-11 稻香.mp3

├─林俊杰
│      林俊杰 -江南.wmv
│      林俊杰 - - 就是我.mp3

└─蔡依林
        蔡依林-love love love.mp3

[ Last edited by tireless on 2008-10-28 at 16:57 ]

2008-10-27 13:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tang0826
新手上路





积分 17
发帖 12
注册 2007-9-11
状态 离线
『第 15 楼』:  

谢谢老大了,把这段代码中的全角"-"替换为半角的"-"就行了。谢谢了


for /f "delims=-" %%a in ('dir /s /a:-d /b') do (
for /f "delims=-" %%a in ('dir /s /a:-d /b') do (

[ Last edited by tang0826 on 2008-10-27 at 14:07 ]

2008-10-27 14:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: