标题: [文件操作] 批处理怎样复制目录及子目录下的所有文件到另一个目录下? [打印本页]
作者: amio555 时间: 2023-3-13 19:19 标题: 批处理怎样复制目录及子目录下的所有文件到另一个目录下?
复制一个目录及子目录下的所有文件到另一个目录下
例如 源目录 d:\123 下面有许许多多的子文件夹 子文件夹下 有许许多多的重名文件
我想要把123文件夹内的所有文件 提取到另外一个文件夹下,不保留原结构,重复文件只保留1个即可,全部文件都保留在根目录下
作者: jyswjjgdwtdtj 时间: 2023-3-13 20:34
本帖最后由 jyswjjgdwtdtj 于 2023-3-13 20:44 编辑
vbs可否?
不知道好不好用- set fso=createobject("scripting.filesystemobject")
- set folderfrom=fso.getfolder("C:\fromfolder")
- folderto="D:\tofolder"
- filetree folderfrom
- sub filetree(fdobject)
- set files=fdobject.files
- set folders=fdobject.subfolders
- for each file in files
- if not fso.fileexists(folderto&"\"&file.name) then
- fso.copyfile(file.path,folderto&"\"&file.name,false)
- end if
- next
- for each folder in folders
- call filetree(folder)
- next
- end sub
复制代码
没试
作者: amio555 时间: 2023-3-13 20:39
回复 2# jyswjjgdwtdtj
可以试试,文件夹内的文件比较多 几十万
作者: amio555 时间: 2023-3-13 20:41
我在网络上搜索到一个 但是效率很低,速度很慢
set "source=d:\123"
set "dest=d:\456"
for /r "%source%" %%d in (*) do copy "%%d" "%dest%"
作者: jyswjjgdwtdtj 时间: 2023-3-13 20:46
回复 3# amio555
那这么多干脆也别写脚本了
在windows文件管理器的文件夹右上角的搜索栏里输入个".",会把所有文件夹和文件列举出来,直接手动复制来的最快
写脚本纯属把简单问题复杂化
作者: amio555 时间: 2023-3-13 20:55
回复 5# jyswjjgdwtdtj
资源管理器会崩溃
作者: jyswjjgdwtdtj 时间: 2023-3-13 21:24
回复 6# amio555
真的吗?十万个文件还不至于吧
那就开脚本吧
作者: buyiyang 时间: 2023-3-13 21:34
- @echo off
- rem 设置源目录和目标目录
- set "so=d:\123"
- set "de="
-
- cd /d "%so%"
- for /r /d %%i in (*) do robocopy /mt:32 /xc /xo /xn "%%i" "%de%"
- pause
复制代码
作者: qixiaobin0715 时间: 2023-3-14 09:03
本帖最后由 qixiaobin0715 于 2023-3-14 09:35 编辑
回复 4# amio555
速度快慢与多种因素有关,有时不一定是代码的问题,文件的多少、文件的大小(比如G级或T级)也会成为影响速度的因素,就看哪个是主导因素:- @echo off
- cd /d "D:\123"
- copy /y "*" "D:\456\"
- for /f "delims=" %%a in ('dir /s /b /ad') do copy /y "%%a\*" "D:\456\"
- pause
复制代码
不要把批处理文件放在D:\123下,否则也会被复制到D:\456中。
作者: amio555 时间: 2023-3-14 13:47
回复 9# qixiaobin0715
可能文件夹文件太多,大概有40万个文件, 批处理一直在执行,可是目标目录一个文件没有被复制过来
作者: qixiaobin0715 时间: 2023-3-14 14:31
将批处理文件保存为ANSI编码试试。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |