找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 69157|回复: 19

[文件操作] 请教批处理COPY命令怎样复制目录?

[复制链接]
发表于 2021-8-26 14:54:41 | 显示全部楼层 |阅读模式
跪拜,跪拜,跪拜,先给各位大神请安,

能帮我写一些文件及文件夹复制的BAT吗?因为不能用XCOPY,只能用COPY命令,但是不知道怎么才能复制目录,并复制目录中的文件,特别是多重目录的,那位大神能帮帮我啊。

因为电脑加密的原因,不能用XCOPY命令,只能用COPY命令,以下代码只能复制文件夹及其子目录里的文件,但是不能复制目录,我想要的效果就是输入一个目录,然后再输入需要复制到的地址,然后这个目录及目录下面的文件都按照原有目录复制到新的地址,并保持原目录结构。
  1. @echo off
  2. set target_path=C:\Users\eee\Desktop\1
  3. set copy_target_path=D:\1
  4. set vcffile=*.*
  5. C:
  6. cd %target_path%
  7. for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%""%vcffile%"') do (
  8. echo %%s
  9. copy /y "%%s" %copy_target_path%
  10. )
  11. pause
复制代码
大神帮忙啊,大神威武,大神万岁。
发表于 2021-8-26 15:07:46 | 显示全部楼层
  1. @echo off
  2. set /p mlm=目录名
  3. set /p fz=复制到哪里
  4. copy %mlm% %mlm%\%fz%
复制代码
发表于 2021-8-26 15:11:34 | 显示全部楼层
回复 1# engene


    robocopy这个命令可以用吗?
 楼主| 发表于 2021-8-26 15:19:51 | 显示全部楼层
回复  engene


    robocopy这个命令可以用吗?
Batcher 发表于 2021-8-26 15:11


Robocopy这个也不行,只能是copy
 楼主| 发表于 2021-8-26 15:20:26 | 显示全部楼层
cmd1152 发表于 2021-8-26 15:07



大神哥,咋不行啊
发表于 2021-8-26 15:25:10 | 显示全部楼层
回复 5# engene


不行就对了。因为copy命令没有复制文件夹结构的功能。
你可以换个思路写代码:先在目标目录下创建相同的文件夹结构,再复制文件。
 楼主| 发表于 2021-8-26 15:27:48 | 显示全部楼层
回复  engene


不行就对了。因为copy命令没有复制文件夹结构的功能。
你可以换个思路写代码:先在目标 ...
Batcher 发表于 2021-8-26 15:25



嗯,这是最后的办法,太麻烦了,好几千个文件夹 ,不知道我是否可以先用dir .\ /s /b >filelist.txt获取文件夹及目录文件列表,不知道能不能根据这个列表用FOR一个一个复制呢?
发表于 2021-8-26 15:29:56 | 显示全部楼层
回复 7# engene


   
几千个文件夹

    是什么目录....
 楼主| 发表于 2021-8-26 15:37:31 | 显示全部楼层
回复 8# cmd1152


    就是一般的电脑文件夹,一个文件夹里面有的有10到30个文件夹,这些文件夹下面又有很多,有的能达到7,8层级
发表于 2021-8-26 15:40:05 | 显示全部楼层
回复 9# engene
换个思路,为什么非要用批处理呢,如果是原样复制,直接复制粘贴即可。
 楼主| 发表于 2021-8-26 16:02:37 | 显示全部楼层
回复 10# qixiaobin0715


    因为加密的原因,正常的windows的复制粘贴操作没用啊,只用能dos的copy命令
发表于 2021-8-26 16:32:09 | 显示全部楼层
回复 7# engene


    可以,最直接的思路最有效。
 楼主| 发表于 2021-8-26 16:40:18 | 显示全部楼层
回复 12# Batcher


咋写代码呢,版主大人  跪拜,跪拜,跪拜
发表于 2021-8-26 17:18:37 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-8-27 10:14 编辑

回复 1# engene
要下班了,来不及仔细检查,你先试试吧:
把文件夹复制到D:盘根目录下。
  1. @echo off
  2. set path1=C:\Users\eee\Desktop\1
  3. set path2=D:\1
  4. cd /d %path1%
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%a in ('dir /b /s /ad') do (
  7.     set str=%%a
  8.     set str=%path2%!str:%cd%=!
  9.     if not exist "!str!" md "!str!"
  10.     if exist "%%a\*.*" copy "%%a\*.*" "!str!"
  11. )
  12. if exist "*.*" copy "*.*" "%path2%"
  13. pause
复制代码
 楼主| 发表于 2021-8-26 17:51:09 | 显示全部楼层
回复 14# qixiaobin0715


    谢谢大神,膜拜ing, 跪拜,
    测试了一下,运行完之后会在原文件夹生成一个"!str!"的文件夹,这个str的文件夹里面包含原文件夹下面文件夹里面的所有文件(不论几层),但是在D盘里没有,麻烦大神明天上班有时间再给看看呗,谢了谢了谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:29 , Processed in 0.043278 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表