32714107 发表于 2012-11-22 10:51:18

如何批量为文件改名(已解决)

本帖最后由 32714107 于 2013-4-29 12:16 编辑

电脑上有很多excel文件,如下图
想把所有的名字如“家庭承包方式土地合同---(王连明)”改为“1616030600200058”,“16160306002000**”为连续的,从1到120
感觉应该用正则吧,可我不太懂,请问怎么改啊?谢谢

afan 发表于 2012-11-22 11:23:01

#Include <File.au3>
Local $sDir = @ScriptDir
Local $aFile = _FileListToArray($sDir, '*1616030600200*', 1)
Local $sNew, $i
For $i = 1 To $aFile
        $sNew = StringRegExpReplace($aFile[$i], '.*?(1616030600200\d+).*', '$1.XLS')
        FileMove($aFile[$i], $sNew)
Next

CCM 发表于 2012-11-22 11:33:01

这个我觉得直接用档案名称修改软体直接作比较快。
现在软体都很强大,可以设定条件字串替换的。

shqf 发表于 2012-11-22 12:29:44

这种情况下 我比较喜欢用批处理,挺快的

xms77 发表于 2012-11-22 12:41:54

回复 4# shqf
想学习一下批处理的代码

32714107 发表于 2012-11-22 14:51:07

谢谢afan老师,也谢谢众多老前辈,让我学到了很多东西!

32714107 发表于 2012-11-22 14:58:34

运行程序,成功!afan老师真是太厉害了,膜拜中。。。。。。

shqf 发表于 2012-11-23 09:42:50

本帖最后由 shqf 于 2012-11-23 09:44 编辑

也交流一下我常在用的批处理方法吧(放在同一个目录下运行)@echo off
setlocal enabledelayedexpansion
for /f "delims=\" %%a in ('dir /b *.xls ') do (
set sfname=%%a
set tfname=!sfname:~18,16!
ren "%%a" !tfname!.xls
)
dir /b *.xls
pause

ppzpph 发表于 2012-11-23 20:52:37

回复 8# shqf


    批处理不会呀,在哪里能学到?

king8462 发表于 2012-11-24 12:37:16


afan 发表于 2012-11-22 11:23 http://www.autoitx.com/images/common/back.gif


版主的正则太强了,学习了,谢谢!

jdd3 发表于 2012-11-30 11:29:17

学习学习学习学习
页: [1]
查看完整版本: 如何批量为文件改名(已解决)