[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] BAT脚本如何批量重命名文件?

本帖最后由 hdhyg 于 2012-7-17 20:07 编辑

在E:\文件\公司文件  下面有很多.bat文件(比如有1000个),名子都不一样。

我想用批处理给里面的所有文件重命名,要改的名子从D:\1.xls表中的B2单元格内容开始提取(如b2,b3,b4...内容全部不重复),分别给E:\文件\公司文件目录下的.bat文件命名。

请高手帮忙。

用VBS也可以,

如果把exce文件格式换成TXT文件也可,

请问这2种都怎么写,

学习中,请高手不吝赐教

BAT脚本不能直接读取xls文件,可以考虑用VBS脚本。
或者你把B列内容手工复制到txt里面,然后再用BAT脚本。
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

BAT脚本不能直接读取xls文件,可以考虑用VBS脚本。
或者你把B列内容手工复制到txt里面,然后再用BAT脚本。
forfiles 发表于 2012-7-17 18:13

用VBS也可以,TXT文件也可,请问这2种都怎么写,学习中

TOP

你的条件没有明确,比如
name.txt 里的名字是
B1
B2
B3
而文件夹里的bat是
1.bat、a.bat、asdasd.bat
那是要指定名称还是可以乱命名?
指定名称 B1 对应 1.bat
乱命名,B1对应哪个都行、、

还有,如果你的名字非常有规律 B1-B999之类的,
可以考虑直接循环不需要读文件了、、

TOP

'**********************************************************
'多格式分类批量重命名脚本
'将同一类文件用1,2,3...的方式重命名
'Date    :  2012-07-10
'Author  :  乱码
'**********************************************************
ExtName = Array("jpg","gif","txt","rar") '要处理的后缀

Set fso = CreateObject("Scripting.FileSystemObject")
For i = 0 To UBound(ExtName)
'分开处理不同的后缀
   
iCount = 1 '重命名计数
   
For Each x In fso.GetFolder(".").Files '遍历本目录所有文件
        
If LCase(fso.GetExtensionName(x.Name)) = LCase(ExtName(i)) Then
            
newName = iCount & "." & ExtName(i)
'新的文件名
            
While fso.FileExists(newName) And LCase(newName) <> LCase(x.Name)
               
'检查新的文件名是否存在,或者是否是自己。
               
iCount = iCount + 1 '存在的话,编号+1
               
newName = iCount & "." & ExtName(i) '重新生成新的文件名
            
Wend
            If
LCase(newName) <> LCase(x.Name) Then x.Name = newName
            
'如果新文件名不等于自己,就重命名。
        
End If
    Next
Next


先贴一个我前几天写的脚本,不行我再修改、、

TOP

你的条件没有明确,比如
name.txt 里的名字是
B1
B2
B3
而文件夹里的bat是
1.bat、a.bat、asdasd.bat ...
乱码 发表于 2012-7-17 20:17


是我没表达清楚。。 在E:\文件\公司文件  目录下文件名为:销售文件 - 副本 (1).bat,,.销售文件 - 副本 (2).bat。。。。一直到  销售文件 - 副本 (800).bat
从D:\name.txt文件中一行对应一个文件名,name.txt 里的名子没有规律,一行就一个名子内容。

如:name.txt里面第1行内容改 销售文件 - 副本 (1).bat ,,,第2行内容改 销售文件 - 副本 (2).bat,,,依次类推。
    如附件依次对应改 在E:\文件\公司文件  目录下文件  销售文件 - 副本 (1).bat,,.销售文件 - 副本 (2).bat。。。。

TOP

本帖最后由 乱码 于 2012-7-17 22:19 编辑
Folder = "公司文件"
Name = "a.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set re = New RegExp
re.Pattern =
"\d+"
'正则表达式,取源文件名的数字,为了保持编号数序、
newBats = Split(vbCrLf & fso.OpenTextFile(Name).ReadAll,vbCrLf) '新的文件名数组

On Error Resume Next
For Each
file In fso.GetFolder(Folder).Files
'遍历文件
   
file.Name = newBats(re.Execute(file.Name).Item(0).Value) & ".bat" '保持对应顺序的重命名
Next

MsgBox "OK"


如果是按照你所描述那样的,那这个可以实现的、

上传不了附件,自己去下载测试数据
http://115.com/file/dpsq56zn#test.rar
2

评分人数

TOP

本帖最后由 hdhyg 于 2012-7-18 11:11 编辑
如果是按照你所描述那样的,那这个可以实现的、

上传不了附件,自己去下载测试数据
http://115.com ...
乱码 发表于 2012-7-17 21:33



    谢谢了,可以了

TOP

本帖最后由 乱码 于 2012-7-18 08:57 编辑

回复 8# hdhyg

代码不是更新了么、一开始那个太繁琐了,不如现在这个直接简洁、
VBS报毒很正常,因为他的名声都被恶搞脚本和病毒搞坏了、

TOP

回复  hdhyg

代码不是更新了么、一开始那个太繁琐了,不如现在这个直接简洁、
VBS报毒很正常,因为他的 ...
乱码 发表于 2012-7-18 08:50



    谢谢高手,我刚学不懂。

TOP

有难度,看看。

TOP

我是来学习的~

TOP

返回列表