Board logo

标题: [文件操作] 批处理如何只复制某路径下所有子路径内的文件到别处? [打印本页]

作者: ednykissyou    时间: 2022-2-9 03:28     标题: 批处理如何只复制某路径下所有子路径内的文件到别处?

伤心了,原来这对我来说很难:只复制某路径下所有子路径内的文件到别处

我原以为,复制C:\this  下不确定文件夹下的所有子文件到 D:\that路径下。
只需这样:
  1. xcopy C:\this\*.* D:\that /s
复制代码
哪想,this下所有子文件夹全考过去了。(伤心了,我不要文件夹啊,我想将所有子文件直接放在D:\that 下)
网上找了好多,也看过robocopy,发现写的都是复制文件夹,没有只复制子路径下的文件的
老师们帮看一下。
谢谢~
作者: ednykissyou    时间: 2022-2-9 04:32

本帖最后由 ednykissyou 于 2022-2-9 04:37 编辑

发现了个这个,能把当前目录的子文件提取到当前。直接就剪掉了。
不知咋改成我要的某个目录下子文件考到指定目录
  1. ::【批处理功能】将当前目录内所有子目录中的文件拷贝到当前目录下。
  2. @echo off
  3. FOR /F "usebackq delims==" %%i IN (`dir /s /ad /b`) DO @copy "%%i"\*.* .\ && set /a js+=1
  4. echo 共移动了%js%个文件
  5. set /a js=0
  6. pause
复制代码
------------------------------------------------

还发现了这个,也是神乎乎的看不懂,不知我的路径要咋加入
https://www.cnblogs.com/miketwais/p/bat_xcopy.html
---------------------------------------------------------
bat复制文件夹下所有文件到另一个目录
一个需求,网上了半天都是错了,所以记一下吧,方便你我。
copy是文件拷贝,文件夹拷贝需要用到xcopy
  1. @echo off
  2. ::当前盘符
  3. set curPath=%cd%
  4. set digPath ="%curPath%tool\dig"
  5. set PATH=%PATH%;%digPath%
  6. wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;%curPath%tool\dig"
  7. ::copy库文件
  8. if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "X86" goto 1
  9. if /i "%PROCESSOR_IDENTIFIER:~0,3%" NEQ "X86" goto 2
  10. :1 /////32位
  11. xcopy %curPath%winpcap\win32\dll\* %systemroot%\System32\ /s/e/y
  12. xcopy %curPath%winpcap\win32\config\* %systemroot%\System32\drivers\ /s/e/y
  13. ::pause
  14. exit
  15. :2 /////64位
  16. echo %curPath%winpcap\win64\dll\win32
  17. xcopy %curPath%winpcap\win64\dll\win32\* %systemroot%\System32\ /s/e/y
  18. xcopy %curPath%winpcap\win32\config\* %systemroot%\System32\drivers\ /s/e/y
  19. xcopy %curPath%winpcap\win64\dll\win64\* %systemroot%\SysWOW64\ /s/e/y
  20. ::pause
  21. exit
复制代码

作者: qixiaobin0715    时间: 2022-2-9 09:14

  1. cd /d "C:\this"
  2. for /f "delims=" %%i in ('dir /s /b /ad') do copy "%%i\*.*" "D:\that"
复制代码

作者: Batcher    时间: 2022-2-9 09:39

回复 1# ednykissyou
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d "C:\this"') do (
  3.     copy /y "%%i" "D:\that"
  4. )
复制代码

作者: ednykissyou    时间: 2022-2-9 13:14

本帖最后由 ednykissyou 于 2022-2-9 13:16 编辑

回复 4# Batcher
你好,这个会一起复制this当前目录里的文件。
我只想椱制this下的子文件夹里的文件
还是要cd /d "C:\this"

作者: ednykissyou    时间: 2022-2-9 13:17

qixiaobin0715 发表于 2022-2-9 09:14


回复 3# qixiaobin0715
谢谢,试了下,对了。
作者: Batcher    时间: 2022-2-9 15:25

回复 5# ednykissyou


从1楼的描述来看,确实没有发现这个要求。
4楼代码改成这样试试:
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d "C:\this" ^| findstr -r C:\\this\\.*\\') do (
  3.     copy /y "%%i" "D:\that"
  4. )
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2