本帖最后由 骗子 于 2013-4-10 19:27 编辑
程序目录下只有一种文件,要么是目录,要么是文件
名称是一组规律的内容,内容不一定是什么,可能是
888(1),888(2)。。。
或者是
xxxx1,xxxx2,xxxx3....
或者是1,2,3...
但是不管是那种,都会是连续的
现在想将这些东西重命名成 一个指定前缀的名称
我自己的代码虽然能实现文件的重命名,但是有个问题就是如果目录下有1~10这样的文件的话
结果会是这样子的:
1 --- I1
10 --- I2
2 --- I3
3 --- I4
我的想法是 1----I1
2----I2
3----I3
#include <File.au3>
#include <array.au3>
#NoTrayIcon
#PRE_UseUpx=N ;使用压缩
$qianzhui = InputBox('请输入前缀', '只需要改名的前缀即可', 'I')
If @error Then Exit
$filelist = _FileListToArray(@ScriptDir)
_ArrayDisplay ($filelist)
$J = 1
If Not @error Then
For $i = 1 To $filelist[0]
If $filelist[$i] <> @ScriptName Then
$word = StringSplit($filelist[$i], '.')
If $word[0] > 1 Then
If Not FileExists(@ScriptDir & '\' & $qianzhui & $J & '.' & $word[2]) Then FileMove(@ScriptDir & '\' & $filelist[$i], @ScriptDir & '\' & $qianzhui & $J & '.' & $word[2], 1)
Else
If Not FileExists(@ScriptDir & '\' & $qianzhui & $J) Then DirMove(@ScriptDir & '\' & $filelist[$i], @ScriptDir & '\' & $qianzhui & $J, 1)
EndIf
$J += 1
EndIf
Next
EndIf
7楼A大的代码
#include <File.au3>
$sQianzhui = InputBox('请输入前缀', '只需要改名的前缀即可', 'I')
If @error Then Exit
_ReNameFromOrder('C:\test', $sQianzhui)
Func _ReNameFromOrder($sDir, $sQianzhui)
Local $afiles = _FileListToArray($sDir), $sNwNe
If @Error Then Return
For $i = 1 To $afiles[0]
$sNwNe = $sQianzhui & StringRegExpReplace($afiles[$i], '.*?(\d+)\D*?(\..+)?$', '\1\2')
If @Extended < 1 Then ContinueLoop
If Not FileExists($sDir & '\' & $afiles[$i] & '\') Then
FileMove($sDir & '\' & $afiles[$i], $sDir & '\' & $sNwNe, 1)
Else
DirMove($sDir & '\' & $afiles[$i], $sDir & '\' & $sNwNe, 1)
EndIf
Next
EndFunc ;==>_ReNameFromOrder
|