中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 查找电脑中,所有的bat文件,并复制到当前目录?
作者:
标题: 查找电脑中,所有的bat文件,并复制到当前目录? 上一主题 | 下一主题
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『楼 主』:  查找电脑中,所有的bat文件,并复制到当前目录?

查找电脑中,所有的bat文件,并复制到当前目录?
这个查找的p,我会写,可是电脑中有很多bat文件,在不同的目录,而且有可能有重名的现象,如何在不改变原名的情况下,复制到当前目录。如果,有同名的情况下,应该如何避免,或有什么好的方法解决呢?

2007-2-18 23:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 2 楼』:  

而且有可能有重名的现象,如何在不改变原名的情况下,复制到当前目录。

好像不可以...

应该如何避免,只能等高人啦~

2007-2-19 00:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 3 楼』:  

难啊,期待高人

2007-2-19 02:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『第 4 楼』:  

这个肯定两行命令以内搞不定啊。判断同名文件,然后……就够麻烦的了。我知道用管理规范命令行可以搞定,但怎么判断重名,怎么做,不会啊。



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-2-19 03:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 5 楼』:  

vbs如果能搞定的话,也可以的
是呀,主要是判断同名的文件,不好办,一方面要拷贝,还要加上判断。
还有一个问题是,如果遍历磁盘文件的话,当前的目录,也会被遍历到,哪结果就是复制重复自身了吧?

2007-2-19 06:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 6 楼』:  


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指定的目录可能出错。
另:若存在相同文件名,则会在新拷贝的文件名前加上”复件“字样。

   此帖被 +16 点积分      点击查看详情   
评分人:【 electronixtar 分数: +8  时间:2007-2-19 12:09
评分人:【 anqing 分数: +8  时间:2007-2-19 12:18


2007-2-19 12:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  



  Quote:
oFolder.CopyHere oFile.Name,8        '自动改名的关键在于8

这个思路好啊,调用explorer自动更名!顶!学习!




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-2-19 12:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 8 楼』:  

太好了。谢谢。
Shell.Application
("winmgmts:").ExecQuery
不太明白??

2007-2-19 12:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zerocq
中级用户




积分 458
发帖 196
注册 2006-10-5
状态 离线
『第 9 楼』:  

dir 目标目录|find 文件名||复制文件
试试

2007-2-19 14:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 10 楼』:  一句话便可



  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 ]



菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-2-19 16:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 11 楼』:  温故而知新


for /f "tokens=*" %%i in ('for /d %%j in ^(C:\* D:\*^) do dir /b/s/a %%~sj^|findstr /i /c:".jpg"') do %%~si




菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-2-19 17:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 12 楼』:  

谢谢10的朋友可是运行你的代码,老显示分析错误!

2007-2-19 22:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 13 楼』:  

这种技巧学习了。

2007-2-19 22:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: