找回密码
 加入
搜索
查看: 2623|回复: 16

初学编程,想做个自动分类的脚本,希望高手能给点思路

[复制链接]
发表于 2009-10-27 22:31:55 | 显示全部楼层 |阅读模式
本帖最后由 xwt620 于 2009-10-29 01:23 编辑

我有个一些打包的RAR文件,都是以 [歌手] - [专辑].rar命名的,歌手名字有中文的也有英文的
我现在想自己做个自动分类的脚本,让电脑自动创建[歌手]的文件夹,然后把和[歌手]名字一样的RAR文件移动到这个[歌手]文件夹中,
因为有的歌手不止1张专辑,这个地方是不是要做重复动作?
我自己的思路:(可能不太理想)
do
提取[歌手]到变量$SingerName  ;这一步还不会做
If Not FileExists ($SingerName) Then  ;没有歌手文件夹则创建
DirCreate ( $SingerName)
Endif
  do
          将相同歌手的RAR文件移动到这个文件夹中  ;这一步也不会做
  until 没有相同歌手的RAR文件  ;直到这个脚本应该怎么写啊?
until 直到没有RAR文件
发表于 2009-10-27 23:23:18 | 显示全部楼层
这个光用循环不行了,要递归枚举了
看看论坛里关于按扩展名搜索文件的函数,类似
发表于 2009-10-28 00:45:52 | 显示全部楼层
刚注册,就要有点难度的要求!到是有个搜索.exe的脚本,有时间我改改看.....
 楼主| 发表于 2009-10-28 01:09:54 | 显示全部楼层
呵呵,确实有点难
刚开始我想做这个脚本时,以为很简单,结果我思路自己写出来后,发现好多表达式我都无法写出来
这说明我学编程的功夫还不够火候,还得继续努力学习ing
发表于 2009-10-28 03:40:47 | 显示全部楼层
本帖最后由 netegg 于 2009-10-28 03:53 编辑

提取歌手名字不难
$filename = stringsplit(stringtrimright($filename,4), "-")
$filename[1]是歌手名
$filename[2]是专辑名
分类放置还没想出来
发表于 2009-10-28 10:27:14 | 显示全部楼层
把你的歌名放一个上来看看,比如:xxx-xxxx.mp3
应该很容易实现
发表于 2009-10-28 10:50:18 | 显示全部楼层
本帖最后由 newx 于 2009-10-28 11:22 编辑

给你个代码,没试过,大概就是这样了:
; 显示当前目录中所有文件的文件名
$search = FileFindFirstFile("
  • -
  • .rar")   ; 检查搜索是否成功 If $search = -1 Then     MsgBox(0, "错误", "没有文件/目录 匹配搜索")     Exit EndIf While 1     $file = FileFindNextFile($search) ;取文件名     $fileName = $file     If @error Then ExitLoop ;直至全部移动完则退出循环     $file = StringReplace($file,"[","") ;去[     $file = StringReplace($file,"]","") ;去]     $file = StringSplit ( $file,".rar",1) ;去.rar     $file = $file[1] ;取文件名,不包含.rar     $file = StringSplit ( $file,"-",1)     $xfile = $file[1] ;歌手     $yfile = $file[2] ;专辑     If FileExists ( $xfile ) = 0 Then DirCreate ( $xfile ) ;如果没歌手文件夹名,则建立以歌手为名的文件夹     If FileExists ( $xfile & "" & $yfile ) = 0 Then DirCreate ( $xfile & "" & $yfile ) ;如果没以专辑为名的文件夹则建立     FileMove ( $fileName , $xfile & "" & $yfile ) ;移动文件 WEnd
  • 发表于 2009-10-28 11:04:23 | 显示全部楼层
    7# newx
    稍作个建议,那个去[]似乎没什么必要,直接建文件夹应该可以了
    发表于 2009-10-28 11:28:54 | 显示全部楼层
    那就把:
        $file = StringReplace($file,"[","") ;去[
        $file = StringReplace($file,"]","") ;去]
    注释掉:-)
    发表于 2009-10-28 11:54:59 | 显示全部楼层
    也可以这样~
    $search = FileFindFirstFile('*.rar')
    If $search = -1 Then Exit (MsgBox(48, '问题', '未找到rar文件  '))
    While 1
            $file = FileFindNextFile($search)
            If @error Then ExitLoop
            $fN = StringRegExp($file, '\[(.*)\] - \[.*\].rar', 3)
            If @error <> 0 Then ContinueLoop
            FileMove($file, $fN[0] & '\' & $file, 8 + 1)
    WEnd
    MsgBox(64, '完成', '已完成符合命名格式的rar文件整理  ')
    FileClose($search)
    发表于 2009-10-28 13:15:30 | 显示全部楼层
    建檔規格上,或許可以參考千千靜聽...
    也同newx  所說的「把你的歌名放一个上来看看,比如:xxx-xxxx.mp3」 <<<最重要
    這部份是成敗的關鍵,剩下就是其他人的範例去結合了...
     楼主| 发表于 2009-10-29 01:22:14 | 显示全部楼层
    感谢newx 提供的代码,已经解决了我的问题。只是执行完后,文件名都改成专辑名了,但是也没什么,总是要解压的
    也很感谢afan 的代码。虽然执行完了,没什么反映,但是我估计大家都理解错了,我的那些打包文件 没有 [] 这个括号
    ,这也是我的错,没有说清楚,所以造成正则表达式可能有点问题。
    附上截图应该很清楚了吧~

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入

    ×
    发表于 2009-10-29 02:04:34 | 显示全部楼层
    本帖最后由 newx 于 2009-10-29 02:08 编辑
    $search = FileFindFirstFile('*-*.zip')
    If $search = -1 Then Exit (MsgBox(48, '问题', '未找到 歌手-专辑.rar 文件  '))
    While 1
            $file = FileFindNextFile($search)
            If @error Then ExitLoop
            $fN = StringRegExp($file, '(.*)-(.*).zip', 3)
            If @error <> 0 Then ContinueLoop
            FileMove($file, $fN[0] & '\' & $fN[1] & '\', 9)
    WEnd
    MsgBox(64, '完成', '已完成符合命名格式的rar文件整理  ')
    FileClose($search)

    评分

    参与人数 1金钱 +29 贡献 +19 收起 理由
    kn007 + 29 + 19 表扬ing

    查看全部评分

    发表于 2009-10-29 11:38:56 | 显示全部楼层
    如果只生成歌手名文件夹,不用生成专辑名文件夹
    $search = FileFindFirstFile('* - *.zip')
    If $search = -1 Then Exit (MsgBox(48, '问题', '未找到符合条件的zip文件  '))
    While 1
            $file = FileFindNextFile($search)
            If @error Then ExitLoop
            $fN = StringRegExp($file, '(.*) - .*.zip', 3)
            If @error <> 0 Then ContinueLoop
            FileMove($file, $fN[0] & '\' & $file, 8 + 1)
    WEnd
    MsgBox(64, '完成', '已完成符合命名格式的zip文件整理  ')
    FileClose($search)

    评分

    参与人数 1金钱 +30 贡献 +20 收起 理由
    kn007 + 30 + 20 表扬ing...

    查看全部评分

    发表于 2009-10-29 15:03:25 | 显示全部楼层
    两位高手。。。
    您需要登录后才可以回帖 登录 | 加入

    本版积分规则

    QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

    GMT+8, 2024-5-18 13:46 , Processed in 0.098061 second(s), 26 queries .

    Powered by Discuz! X3.5 Licensed

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表