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

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

跪拜,跪拜,跪拜,先给各位大神请安,

能帮我写一些文件及文件夹复制的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
复制代码
大神帮忙啊,大神威武,大神万岁。

回复 17# qixiaobin0715


  超级厉害,修改后的完美了,原文件夹也不会生产str文件了,也能把根目录下的文件一块复制过去了,崇拜ing......

感谢大神帮忙,感谢,跪拜。。。

TOP

回复 16# Batcher

本人平生最羡慕能写代码的人,对于这种慷慨帮助别人的人,我更是羡慕,请让我叫你一声,大神,大神,大神,崇拜你。
完美运行,超级厉害,跪谢,跪谢。。。

TOP

可以用 powershell vbs 之类的吗

TOP

回复 15# engene
已修改。
尽量不要把批处理代码文件放在要处理的文件夹中。如果还不行,可以试试Bather的代码。

TOP

回复 1# engene
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "SrcFolder=C:\Users\eee\Desktop\1"
  4. set "DstFolder=D:\1"
  5. cd /d "%~dp0"
  6. copy /y "%SrcFolder%\*.*" "!DstFolder!\"
  7. for /f "delims=" %%i in ('dir /b /s /ad "%SrcFolder%"') do (
  8.     set "NewFolder=%%i"
  9.     set "NewFolder=%DstFolder%!NewFolder:%SrcFolder%=!"
  10.     if not exist "!NewFolder!" (
  11.         md "!NewFolder!"
  12.     )
  13.     copy /y "%%i\*.*" "!NewFolder!\"
  14. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# qixiaobin0715


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

TOP

本帖最后由 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
复制代码

TOP

回复 12# Batcher


咋写代码呢,版主大人  跪拜,跪拜,跪拜

TOP

回复 7# engene


    可以,最直接的思路最有效。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# qixiaobin0715


    因为加密的原因,正常的windows的复制粘贴操作没用啊,只用能dos的copy命令

TOP

回复 9# engene
换个思路,为什么非要用批处理呢,如果是原样复制,直接复制粘贴即可。

TOP

回复 8# cmd1152


    就是一般的电脑文件夹,一个文件夹里面有的有10到30个文件夹,这些文件夹下面又有很多,有的能达到7,8层级

TOP

回复 7# engene


   
几千个文件夹

    是什么目录....
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复  engene


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



嗯,这是最后的办法,太麻烦了,好几千个文件夹 ,不知道我是否可以先用dir .\ /s /b >filelist.txt获取文件夹及目录文件列表,不知道能不能根据这个列表用FOR一个一个复制呢?

TOP

返回列表