找回密码
 加入
搜索
查看: 2146|回复: 7

[AU3基础] [已解决]批量修改文件名

[复制链接]
发表于 2018-8-31 11:34:40 | 显示全部楼层 |阅读模式
本帖最后由 天天笑 于 2018-8-31 13:37 编辑

原文件如下图:                                       批量修改后的文件:
Type 000.xls                                          Type 0.xls
Type 001.xls                                          Type 1.xls
Type 002.xls                                          Type 2.xls
Type 003.xls                                          Type 3.xls
Type 004.xls                                          Type 4.xls
Type 007.xls                                          Type 7.xls
Type 009.xls                                          Type 9.xls
Type 010.xls                                          Type 10.xls
.....                                                       ......
有什么办法可以实现吗?
就是按照正常的数字显示,把前面的0去掉。

本帖子中包含更多资源

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

×
发表于 2018-8-31 12:00:55 | 显示全部楼层
### 友情提示:本脚本由 Au3.REHelper 于 2018/08/31 12:00 自动生成,不保证其正确性,请自行测试 ###
Local $sSource = _
                'Type 000.xls' & @CRLF & _
                'Type 001.xls' & @CRLF & _
                'Type 007.txt' & @CRLF & _
                'Type 0090.xls' & @CRLF & _
                'Type 010.XLS' & @CRLF & _
                'Type00100.xls'
;~MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '(?mi)(?<=\D)0+(?=\d+\.xls$)', '')
MsgBox(0, '替换结果', $sSRERe)
发表于 2018-8-31 12:07:02 | 显示全部楼层
本帖最后由 skyfree 于 2018-8-31 12:08 编辑

AutoItSetOption('MustDeclareVars', 1)

#include <Array.au3>
#include <File.au3>

_Main()
Exit

Func _Main()
        
        Local $sInputDir = @ScriptDir & '\Files'
        
        Local $aFileList = _FileListToArray($sInputDir, '*.xls', 1)
        ;;_ArrayDisplay($aFileList, '$aFileList')
        
        Local $i, $sNewFileName, $aTemp
        For $i = 1 To UBound($aFileList, 1) - 1
                $aTemp = StringRegExp($aFileList[$i], '(?i)^Type (\d{1,3})\.xls$', 2)
                If Not (@error) Then
                        $sNewFileName = 'Type ' & String(Int($aTemp[1])) & '.xls'
                        FileMove($sInputDir & '\' & $aFileList[$i], $sInputDir & '\' & $sNewFileName, 1)
                EndIf
        Next
        
        MsgBox(64, '', 'OK!')
        
EndFunc   ;==>_Main


$sInputDir 的值改成你存放文件的目录的绝对路径

本帖子中包含更多资源

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

×
发表于 2018-8-31 12:47:50 | 显示全部楼层
哈哈,两位大佬的正则有点差别啊。

改完一排序,你可能又想改回来了。
发表于 2018-8-31 12:53:38 | 显示全部楼层
StringFormat
 楼主| 发表于 2018-8-31 13:36:45 | 显示全部楼层
skyfree 发表于 2018-8-31 12:07
[au3]AutoItSetOption('MustDeclareVars', 1)

#include

可以了,跟要的结果一摸一样。谢谢哈。
正则是个好东西,可是我不会
发表于 2018-8-31 14:05:31 | 显示全部楼层
批处理的写法
@echo off
for /f "tokens=1,2 delims= " %%a in ('dir /b/a-d *.xls') do (
   set /a num=%%~nb
   call,ren "%%a %%b" "%%a %%num%%%%~xb
)
发表于 2018-8-31 18:57:06 | 显示全部楼层

哈哈 大佬能用正则解决的问题坚决不用别的方法

评分

参与人数 1金钱 +50 收起 理由
afan + 50 必须的~ 顺手送点金

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 14:32 , Processed in 0.071850 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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