标题: [文件操作] 请教批处理COPY命令怎样复制目录? [打印本页]
作者: engene 时间: 2021-8-26 14:54 标题: 请教批处理COPY命令怎样复制目录?
跪拜,跪拜,跪拜,先给各位大神请安,
能帮我写一些文件及文件夹复制的BAT吗?因为不能用XCOPY,只能用COPY命令,但是不知道怎么才能复制目录,并复制目录中的文件,特别是多重目录的,那位大神能帮帮我啊。
因为电脑加密的原因,不能用XCOPY命令,只能用COPY命令,以下代码只能复制文件夹及其子目录里的文件,但是不能复制目录,我想要的效果就是输入一个目录,然后再输入需要复制到的地址,然后这个目录及目录下面的文件都按照原有目录复制到新的地址,并保持原目录结构。- @echo off
- set target_path=C:\Users\eee\Desktop\1
- set copy_target_path=D:\1
- set vcffile=*.*
- C:
- cd %target_path%
- for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%"\"%vcffile%"') do (
- echo %%s
- copy /y "%%s" %copy_target_path%
- )
- pause
复制代码
大神帮忙啊,大神威武,大神万岁。
作者: cmd1152 时间: 2021-8-26 15:07
- @echo off
- set /p mlm=目录名
- set /p fz=复制到哪里
- copy %mlm% %mlm%\%fz%
复制代码
作者: Batcher 时间: 2021-8-26 15:11
回复 1# engene
robocopy这个命令可以用吗?
作者: engene 时间: 2021-8-26 15:19
回复 engene
robocopy这个命令可以用吗?
Batcher 发表于 2021-8-26 15:11
Robocopy这个也不行,只能是copy
作者: engene 时间: 2021-8-26 15:20
cmd1152 发表于 2021-8-26 15:07
大神哥,咋不行啊
作者: Batcher 时间: 2021-8-26 15:25
回复 5# engene
不行就对了。因为copy命令没有复制文件夹结构的功能。
你可以换个思路写代码:先在目标目录下创建相同的文件夹结构,再复制文件。
作者: engene 时间: 2021-8-26 15:27
回复 engene
不行就对了。因为copy命令没有复制文件夹结构的功能。
你可以换个思路写代码:先在目标 ...
Batcher 发表于 2021-8-26 15:25
嗯,这是最后的办法,太麻烦了,好几千个文件夹 ,不知道我是否可以先用dir .\ /s /b >filelist.txt获取文件夹及目录文件列表,不知道能不能根据这个列表用FOR一个一个复制呢?
作者: cmd1152 时间: 2021-8-26 15:29
回复 7# engene
是什么目录....
作者: engene 时间: 2021-8-26 15:37
回复 8# cmd1152
就是一般的电脑文件夹,一个文件夹里面有的有10到30个文件夹,这些文件夹下面又有很多,有的能达到7,8层级
作者: qixiaobin0715 时间: 2021-8-26 15:40
回复 9# engene
换个思路,为什么非要用批处理呢,如果是原样复制,直接复制粘贴即可。
作者: engene 时间: 2021-8-26 16:02
回复 10# qixiaobin0715
因为加密的原因,正常的windows的复制粘贴操作没用啊,只用能dos的copy命令
作者: Batcher 时间: 2021-8-26 16:32
回复 7# engene
可以,最直接的思路最有效。
作者: engene 时间: 2021-8-26 16:40
回复 12# Batcher
咋写代码呢,版主大人 跪拜,跪拜,跪拜
作者: qixiaobin0715 时间: 2021-8-26 17:18
本帖最后由 qixiaobin0715 于 2021-8-27 10:14 编辑
回复 1# engene
要下班了,来不及仔细检查,你先试试吧:
把文件夹复制到D:盘根目录下。- @echo off
- set path1=C:\Users\eee\Desktop\1
- set path2=D:\1
- cd /d %path1%
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /s /ad') do (
- set str=%%a
- set str=%path2%!str:%cd%=!
- if not exist "!str!" md "!str!"
- if exist "%%a\*.*" copy "%%a\*.*" "!str!"
- )
- if exist "*.*" copy "*.*" "%path2%"
- pause
复制代码
作者: engene 时间: 2021-8-26 17:51
回复 14# qixiaobin0715
谢谢大神,膜拜ing, 跪拜,
测试了一下,运行完之后会在原文件夹生成一个"!str!"的文件夹,这个str的文件夹里面包含原文件夹下面文件夹里面的所有文件(不论几层),但是在D盘里没有,麻烦大神明天上班有时间再给看看呗,谢了谢了谢了。
作者: Batcher 时间: 2021-8-26 18:00
回复 1# engene - @echo off
- setlocal enabledelayedexpansion
- set "SrcFolder=C:\Users\eee\Desktop\1"
- set "DstFolder=D:\1"
- cd /d "%~dp0"
- copy /y "%SrcFolder%\*.*" "!DstFolder!\"
- for /f "delims=" %%i in ('dir /b /s /ad "%SrcFolder%"') do (
- set "NewFolder=%%i"
- set "NewFolder=%DstFolder%!NewFolder:%SrcFolder%=!"
- if not exist "!NewFolder!" (
- md "!NewFolder!"
- )
- copy /y "%%i\*.*" "!NewFolder!\"
- )
复制代码
作者: qixiaobin0715 时间: 2021-8-26 20:30
回复 15# engene
已修改。
尽量不要把批处理代码文件放在要处理的文件夹中。如果还不行,可以试试Bather的代码。
作者: newswan 时间: 2021-8-26 21:04
可以用 powershell vbs 之类的吗
作者: engene 时间: 2021-8-27 14:34
回复 16# Batcher
本人平生最羡慕能写代码的人,对于这种慷慨帮助别人的人,我更是羡慕,请让我叫你一声,大神,大神,大神,崇拜你。
完美运行,超级厉害,跪谢,跪谢。。。
作者: engene 时间: 2021-8-27 14:39
回复 17# qixiaobin0715
超级厉害,修改后的完美了,原文件夹也不会生产str文件了,也能把根目录下的文件一块复制过去了,崇拜ing......
感谢大神帮忙,感谢,跪拜。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |