标题: [其他] [已解决]找一个能合并文件夹的第三方程序(借用VBS实现了) [打印本页]
作者: hnfeng 时间: 2023-3-30 16:28 标题: [已解决]找一个能合并文件夹的第三方程序(借用VBS实现了)
本帖最后由 hnfeng 于 2023-3-31 08:40 编辑
有多个子文件夹,里面各有多层子文件夹及不同的文件(这些子文件夹其实是之前一个较大的文件夹拆分开的,为了刻光盘),文件夹结构保持没变。
现在想把这些文件夹合并在一起,恢复成以前那样的一个大文件夹(文件夹结构保持不变)。
首先想到了命令 Move,但是发现 move 命令 只能移动一个文件夹,移动第二个文件夹时,因为目标位置已有同名文件夹而拒接执行(貌似印象中在 XP 时添加 /Y 参数后是可以的),现在在 WIn7/10 却不行了。
如果使用 Ctel+X 剪切 然后在目录文件夹 Ctrl+V 粘贴, 系统提示是否合并文件夹,按确定,就能合并文件夹,而且速度极快,因为在同一个磁盘上。但是,好多啊……
然后想到了 robocopy (参数 /move) 和 FastCopy (参数 /cmd=move) ,发现这两个工具在移动文件夹功能上都是很弱智的: 先复制 再删除,速度慢啊
其他方法没找到。当然,在“第三方库”中搜到了 mvdir.exe ,这工具不成功(或者是我不会用,也没找到什么帮助)
所以在此向高手求助,能实现同硬盘快速合并文件夹的第三方程序,类似系统中 使用 Ctel+X 剪切 然后在目录文件夹 Ctrl+V 粘贴, 系统提示是否合并,按确定,就能合并文件夹的功能。
先谢谢了
作者: Batcher 时间: 2023-3-30 16:43
回复 1# hnfeng
请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,可以用阿里云盘或百度网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: newswan 时间: 2023-3-30 17:05
移动文件,然后删除目录
作者: czjt1234 时间: 2023-3-30 20:53
vbs- s1 = "d:\1" '要被移动的文件夹
- s2 = "d:\2" '要移动到这个文件夹,且已有 d:\2\1 文件夹
-
- Set oShell = CreateObject("Shell.Application")
- Set oFolder = oShell.NameSpace(17).ParseName(s2).GetFolder
- Set oFolderItem = oShell.NameSpace(17).ParseName(s1)
- oFolder.MoveHere oFolderItem, 16
- MsgBox "ok"
复制代码
win7_x64_sp1测试,运行后自动覆盖已有的 d:\2\1 文件夹
d:\1 文件夹里面有5G的文件,瞬间移动完成,说明是移动,而不是先复制后删除
作者: czjt1234 时间: 2023-3-30 21:00
- s1 = "d:\1" '要被移动的文件夹
- s2 = "d:\2" '要移动到这个文件夹,且已有 d:\2\1 文件夹
-
- If Wsh.Arguments.Count > 0 Then s1 = Wsh.Arguments(0)
- If Wsh.Arguments.Count > 1 Then s2 = Wsh.Arguments(1)
-
- Set oShell = CreateObject("Shell.Application")
- Set oFolder = oShell.NameSpace(17).ParseName(s2).GetFolder
- Set oFolderItem = oShell.NameSpace(17).ParseName(s1)
- oFolder.MoveHere oFolderItem, 16
- Wsh.Echo s1
复制代码
支持命令行参数
第一个参数是要被移动的文件夹
第二个参数是要移动到的文件夹
参数必须是完整的路径
作者: hnfeng 时间: 2023-3-31 08:39
支持命令行参数
第一个参数是要被移动的文件夹
第二个参数是要移动到的文件夹
参数必须是完整的路径
czjt1234 发表于 2023-3-30 21:00
多谢多谢!
不熟悉vbs,百度了一下bat给vbs传递参数,原来大侠已经做好了。经试验,完美!
再次感谢大侠相助!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |