|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『楼 主』:
请教如何批量复制文件时重命名文件
我要把f盘的一大堆文件复制到e盘,要求:复制的时候如果遇到同名文件不覆盖原文件自动将复制的文件改名,改名方式是在原文件名后加序号,如:a.txt改为a1.txt再有就改为a2.txt,遇到b.txt就改为b1.txt.....b2.txt............
我的意思是f盘aaa文件夹里有很多txt文件,e盘123文件夹也有很多txt文件,并且有些是同名的,我现在要把f盘aaa文件夹里的的所有txt文件复制到e盘123文件夹里,要求遇到同名时,自动重命名,命名要求如上.[/size]
[ Last edited by 26933062 on 2006-12-26 at 07:03 PM ]
|
|
2006-12-27 04:31 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
2 楼』:
复制哪些文件?一个文件夹中的所有文件还是一个类型的所有文件?
把文件尽量描述清楚。
|
|
2006-12-27 04:56 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
3 楼』:
这是用VBS写的(办法很笨,效率很低。)
功能:将E: \111下的所有文件 复制到E: \222文件夹下,遇到同名时重新命名,命名规则如楼主所说。具体路径可以自己更改。
注意:不处理文件夹。
Set fso=CreateObject("scripting.filesystemobject")
Set lswj=fso.CreateTextFile("e:\222\temp.temp")
lswj.Close
Set fil=fso.GetFolder("E:\111")
Set fils=fil.Files
Call mb()
For Each wj In fils
a=fso.GetBaseName(wj)
Call fuzhi()
Next
fso.DeleteFile "tmp.txt"
fso.DeleteFile "e:\222\temp.temp"
Set fso=nothing
Set fil=Nothing
Set fils=Nothing
MsgBox "复制完成!",48+4096,"操作成功"
Sub fuzhi()
Set bj=fso.openTextFile("tmp.txt")
i=0
Do While bj.AtEndOfStream <> True
b=bj.ReadLine
If a=Left(b,Len(a)) Then i=i+1
If i=0 Then
fso.CopyFile wj,"e:\222\"
Else
fso.CopyFile wj,"e:\222\"&a&i&"."&fso.GetExtensionName(wj)
End if
Loop
bj.Close
Set bj=Nothing
End Sub
Sub mb()
Set file=fso.GetFolder("E:\222")
Set tmp=fso.createTextFile("tmp.txt")
For Each mbwj In file.Files
tmp.WriteLine fso.GetBaseName(mbwj)
Next
tmp.Close
Set file=Nothing
Set files=Nothing
Set tmp=Nothing
End Sub [ Last edited by jmz573515 on 2006-12-27 at 12:11 PM ]
|
|
2006-12-27 09:25 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
4 楼』:
谢谢jmz573515
我不会vbs我想用批处理.批处理能做到吗?
|
|
2006-12-27 11:12 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
5 楼』:
8好意思,批处理我更是门外汉。我想一定会有高手能够做到。:)
|
|
2006-12-27 11:42 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
6 楼』:
批处理版的来了:
@echo off
set num=0
for /f "delims=" %%i in ('dir /a-d /b f:\aa\*.txt') do (
if not exist "e:\123\%%i" (
copy "f:\aa\%%i" e:\123>nul
) else call :copy_txt "f:\aa\%%i" "%%~ni" %%~xi
)
goto :eof
:copy_txt
set file_n=%2
set "file_n=%file_n:~1,-1%"
set file_x=%3
set /a num+=1
if not exist "e:\123\%file_n%%num%%file_x%" (
copy %1 "e:\123\%file_n%%num%%file_x%">nul
) else call :copy_txt %1 "%file_n%" %file_x%
set num=0
goto :eof [ Last edited by namejm on 2006-12-26 at 10:59 PM ]
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-12-27 11:58 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
7 楼』:
哎!!!
强大的批处理呀,我要何时才学的会!!!!!!!!!!!!!
版主太强了,谢谢.....谢谢..........!
|
|
2006-12-27 14:47 |
|
|
duzhuoshu
初级用户
积分 20
发帖 9
注册 2007-5-29
状态 离线
|
|
2007-5-29 22:03 |
|
|
fenglingluan
新手上路
积分 7
发帖 3
注册 2007-5-12
状态 离线
|
『第
9 楼』:
对版主佩服得真是五体投地了,
叫我来肯定写不出那么精简!!!!
|
|
2007-5-30 01:00 |
|
|
colorphoto
初级用户
积分 130
发帖 15
注册 2005-2-10
状态 离线
|
|
2007-5-30 02:57 |
|
|
wxcute
中级用户
积分 458
发帖 211
注册 2006-7-26
状态 离线
|
|
2007-9-3 20:43 |
|