标题: 查找电脑中,所有的bat文件,并复制到当前目录?
[打印本页]
作者: anqing
时间: 2007-2-18 23:45
标题: 查找电脑中,所有的bat文件,并复制到当前目录?
查找电脑中,所有的bat文件,并复制到当前目录?
这个查找的p,我会写,可是电脑中有很多bat文件,在不同的目录,而且有可能有重名的现象,如何在不改变原名的情况下,复制到当前目录。如果,有同名的情况下,应该如何避免,或有什么好的方法解决呢?
作者: jmz573515
时间: 2007-2-19 00:59
而且有可能有重名的现象,如何在不改变原名的情况下,复制到当前目录。
好像不可以...
应该如何避免,只能等高人啦~
作者: gne3
时间: 2007-2-19 02:32
难啊,期待高人
作者: oilio
时间: 2007-2-19 03:55
这个肯定两行命令以内搞不定啊。判断同名文件,然后……就够麻烦的了。我知道用管理规范命令行可以搞定,但怎么判断重名,怎么做,不会啊。
作者: anqing
时间: 2007-2-19 06:26
vbs如果能搞定的话,也可以的
是呀,主要是判断同名的文件,不好办,一方面要拷贝,还要加上判断。
还有一个问题是,如果遍历磁盘文件的话,当前的目录,也会被遍历到,哪结果就是复制重复自身了吧?
作者: 3742668
时间: 2007-2-19 12:03
Dim oShell,oFolder,oFile,sFolder,sExtension
sFolder = "d:\d" '目标目录
sExtension = "bat" '扩展名
Set oShell = CreateObject("Shell.Application")
Set oFolder = oShell.NameSpace(sFolder) 'oShell.NameSpace(.)可获得当前目录
For Each oFile In GetObject("winmgmts:").ExecQuery( _
"Select * from CIM_DataFile Where Extension='" & sExtension & "'")
oFolder.CopyHere oFile.Name,8 '自动改名的关键在于8
Next
Set oFolder = Nothing
Set oShell = Nothing
其实不论用bat还是vbs都并非很复杂,只需要先保存所有需要拷贝的文件名然后分别处理就行了。
出于效率以及简洁方面的原因,使用了vbs来构建脚本。如果不存在sFolder指定的目录可能出错。
另:若存在相同文件名,则会在新拷贝的文件名前加上”复件“字样。
作者: electronixtar
时间: 2007-2-19 12:09
Quote: |
oFolder.CopyHere oFile.Name,8 '自动改名的关键在于8 |
|
这个思路好啊,调用explorer自动更名!顶!学习!
作者: anqing
时间: 2007-2-19 12:17
太好了。谢谢。
Shell.Application
("winmgmts:").ExecQuery
不太明白??
作者: zerocq
时间: 2007-2-19 14:19
dir 目标目录|find 文件名||复制文件
试试
作者: PPdos
时间: 2007-2-19 16:02
标题: 一句话便可
Quote: |
Originally posted by oilio at 2007-2-18 02:55 PM:
这个肯定两行命令以内搞不定啊。判断同名文件,然后……就够麻烦的了。我知道用管理规范命令行可以搞定,但怎么判断重名,怎么做,不会啊。 |
|
for /f "tokens=*" %%i in ('for /d %%j in ^(C:\* D:\*^) do dir /b/s/a %%~sj^|findstr /i /c:".bat"') do echo Y|xcopy "%%i" bat文件\%%~ni\%%~zi\
可用时间 大小 等设为文件夹名称来分开相同文件
[
Last edited by PPdos on 2007-2-19 at 03:35 AM ]
作者: PPdos
时间: 2007-2-19 17:16
标题: 温故而知新
for /f "tokens=*" %%i in ('for /d %%j in ^(C:\* D:\*^) do dir /b/s/a %%~sj^|findstr /i /c:".jpg"') do %%~si
作者: anqing
时间: 2007-2-19 22:46
谢谢10的朋友可是运行你的代码,老显示分析错误!
作者: anqing
时间: 2007-2-19 22:48
这种技巧学习了。