asura 发表于 2012-4-2 18:22:24

怎么用AU3重命名D盘文件夹名称?(已解决)

本帖最后由 asura 于 2012-4-2 22:00 编辑

是这样的 若发现d盘存在image开头这样的文件夹,分别将他们重命名,即在他们名称后分别加1.2.3阿拉伯数字顺次排列下去,类似这样 若发现imagea imageb 则重命名为imagea1 imageb2 以前用批处理写过,但用AU3怎么写呢?请教各位大大。谢谢!

happytc 发表于 2012-4-2 18:37:37

本帖最后由 happytc 于 2012-4-2 18:41 编辑


Local $i = 1
While True
        If FileExists("D:\image\") Then
                DirMove("D:\image", "D:\image" & $i, 1)
                $i += 1
        EndIf
        Sleep(100)
WEnd

asura 发表于 2012-4-2 18:49:09

回复 2# happytc


    大哥这样不行吧。是存在image开头这一类文件夹重命名为后面分别加1

vason1019 发表于 2012-4-2 19:10:00

1楼的判断式怎么不行 楼主你不试怎么知道不可以

vason1019 发表于 2012-4-2 19:10:10

1楼的判断式怎么不行 楼主你不试怎么知道不可以

happytc 发表于 2012-4-2 19:30:08

回复 4# vason1019

他是说image开头的,如象imageAuto这样的文件夹名


#include <File.au3>

Local $i = 1, $aDir, $sDir = "D:\"
While True
        $aDir = _FileListToArray($sDir, "image*", 2)
        If IsArray($aDir) Then
                For $j = 1 To $aDir
                        If Not StringRegExp($aDir[$j], "^image.*?\d$") Then
                                DirMove($sDir & $aDir[$j], $sDir & $aDir[$j] & $i, 1)
                                $i += 1
                        EndIf
                Next
        EndIf
       
        $aDir = 0
        Sleep(100)
WEnd

asura 发表于 2012-4-2 20:52:01

回复 6# happytc


    哥我错了,看样子,还是我没有表达清楚我要说的意思 ,已经修改内容了,请在仔细看下,谢谢

apoorman1986 发表于 2012-4-2 21:04:16

回复 6# happytc


用WHILE循环,脚本一直在运行,不会退出,刚测试了也不成功!

apoorman1986 发表于 2012-4-2 21:33:11

本帖最后由 apoorman1986 于 2012-4-2 21:34 编辑

试一下我的#include <File.au3>
#include<array.au3>
Local $aDir, $sDir = "D:\"
$aDir=_FileListToArray($sDir,"image*",2)
If IsArray($aDir) Then
        _ArrayDisplay($aDir)
        For $i=1 To $aDir
                DirMove($sDir&$aDir[$i],$sDir&"image"&$i,1)
                Next
Else
        MsgBox(0,"","没找到以image开头的文件夹")
EndIf

happytc 发表于 2012-4-2 21:35:05

回复 7# asura


    6楼的代码,那点不合你要求?
你检查已经存在的文件夹?而不管脚本运行后新生成的这种文件夹?
若是这上意思,去掉While循环就可以了

apoorman1986 发表于 2012-4-2 21:37:45

本帖最后由 apoorman1986 于 2012-4-2 21:39 编辑

{:face (303):}回复 10# happytc

去掉while
还有重命名dirmove你写错了,我修正了一下!

happytc 发表于 2012-4-2 21:47:52

本帖最后由 happytc 于 2012-4-2 21:49 编辑

回复happytc

去掉while
还有重命名dirmove你写错了,我修正了一下!
apoorman1986 发表于 2012-4-2 21:37 http://www.autoitx.com/images/common/back.gif

呵,没有错,那是用作新生了象这样的文件夹名时修改用的,你可以试试脚本运行后,再新建一个“imageXYZ"文件夹
若只是一次性运行脚本,当然得修改下循环变量了

asura 发表于 2012-4-2 21:58:07

回复 10# happytc


    是这个意思,谢谢兄弟帮忙,多谢

asura 发表于 2012-4-3 17:54:18

回复 6# happytc


    兄弟还是麻烦你了,在请您在帮个忙,您给的脚本是可行的,可以将以image开头的文件夹重命名,但是如果下次在生产image这样的文件夹呢,在运行此脚本可能就不行了,假如第一次将image命名为image1 (这个文件夹没有删除) ,但是在D盘又生成了新的image文件夹,可能在运行此脚本就不行 了,因为存在同名了,我不想覆盖掉,简单点说只要存在image这个文件夹就将重命名。

happytc 发表于 2012-4-4 15:22:47

回复happytc


    兄弟还是麻烦你了,在请您在帮个忙,您给的脚本是可行的,可以将以image开头的文件 ...
asura 发表于 2012-4-3 17:54 http://www.autoitx.com/images/common/back.gif

我说老兄,你自己也写写嘛,这么简单的一点。
不过是先判断下已有文件夹名最后的数字,找到最大的,把6楼的$i初值变成这个最大值呀


#include <File.au3>

Local $i, $aDir, $sDir = "D:\", $iNumOri = 0, $iNum
$aDir = _FileListToArray($sDir, "image*", 2)
If IsArray($aDir) Then
        For $j = 1 to $aDir
                $iNum = StringRegExpReplace($aDir[$j], "(^image.*?)(\d+)", "\2")
                $iNum = Number($iNum)
                If $iNum > $iNumOri Then $iNumOri = $iNum
        Next
        $i = $iNumOri + 1
Else
        $i = 1
EndIf
       
       
While True
      $aDir = _FileListToArray($sDir, "image*", 2)
      If IsArray($aDir) Then
                For $j = 1 To $aDir
                        If Not StringRegExp($aDir[$j], "^image.*?\d$") Then
                              DirMove($sDir & $aDir[$j], $sDir & $aDir[$j] & $i, 1)
                              $i += 1
                        EndIf
                Next
      EndIf
      
      $aDir = 0
      Sleep(100)
WEnd
页: [1] 2
查看完整版本: 怎么用AU3重命名D盘文件夹名称?(已解决)