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

[文件操作] 批处理怎样复制目录及子目录下的所有文件到另一个目录下?

复制一个目录及子目录下的所有文件到另一个目录下

例如 源目录  d:\123   下面有许许多多的子文件夹    子文件夹下  有许许多多的重名文件

我想要把123文件夹内的所有文件    提取到另外一个文件夹下,不保留原结构,重复文件只保留1个即可,全部文件都保留在根目录下

本帖最后由 jyswjjgdwtdtj 于 2023-3-13 20:44 编辑

vbs可否?

不知道好不好用
  1. set fso=createobject("scripting.filesystemobject")
  2. set folderfrom=fso.getfolder(‪"C:\fromfolder")
  3. folderto="D:\tofolder"
  4. filetree folderfrom
  5. sub filetree(fdobject)
  6. set files=fdobject.files
  7. set folders=fdobject.subfolders
  8. for each file in files
  9. if not fso.fileexists(folderto&"\"&file.name) then
  10. fso.copyfile(file.path,folderto&"\"&file.name,false)
  11. end if
  12. next
  13. for each folder in folders
  14. call filetree(folder)
  15. next
  16. end sub
复制代码
没试

TOP

回复 2# jyswjjgdwtdtj


    可以试试,文件夹内的文件比较多     几十万

TOP

我在网络上搜索到一个  但是效率很低,速度很慢
set "source=d:\123"
set "dest=d:\456"
for /r "%source%" %%d in (*) do copy "%%d" "%dest%"

TOP

回复 3# amio555


    那这么多干脆也别写脚本了
在windows文件管理器的文件夹右上角的搜索栏里输入个".",会把所有文件夹和文件列举出来,直接手动复制来的最快
写脚本纯属把简单问题复杂化

TOP

回复 5# jyswjjgdwtdtj


    资源管理器会崩溃

TOP

回复 6# amio555


    真的吗?十万个文件还不至于吧
那就开脚本吧

TOP

  1. @echo off
  2. rem 设置源目录和目标目录
  3. set "so=d:\123"
  4. set "de="
  5. cd /d "%so%"
  6. for /r /d %%i in (*) do robocopy /mt:32 /xc /xo /xn "%%i" "%de%"
  7. pause
复制代码

TOP

本帖最后由 qixiaobin0715 于 2023-3-14 09:35 编辑

回复 4# amio555
速度快慢与多种因素有关,有时不一定是代码的问题,文件的多少、文件的大小(比如G级或T级)也会成为影响速度的因素,就看哪个是主导因素:
  1. @echo off
  2. cd /d "D:\123"
  3. copy /y "*" "D:\456\"
  4. for /f "delims=" %%a in ('dir /s /b /ad') do copy /y "%%a\*" "D:\456\"
  5. pause
复制代码
不要把批处理文件放在D:\123下,否则也会被复制到D:\456中。

TOP

回复 9# qixiaobin0715


    可能文件夹文件太多,大概有40万个文件, 批处理一直在执行,可是目标目录一个文件没有被复制过来

TOP

将批处理文件保存为ANSI编码试试。

TOP

返回列表