用bat复制电脑中一个文件夹及其内所有子目录与文件到另一文件夹内

例如:已经知道电脑中有“aa\bb\ff”的文件夹ff,但不知道aa之前的路径与盘符,在ff文件夹内还有许多文件和子目录,也知道在电脑中还有“11\22\77”的文件夹77,同样不知道77文件夹的具体路径,如何编写bat能直接将ff文件夹及其内所有子目录与文件复制到11\22\77中。

@echo off&setlocal enabledelayedexpansion
for %%a in (c d e f) do (
   if exist %%a: (
      echo 正在搜索%%a:
      for /f "delims=" %%b in ('dir /ad /b /s %%a:\') do (
         set str=%%b
         if "!str:~-8!"=="aa\bb\ff" set path1=!str!&&echo "aa\bb\ff"路径已经找到!
         if "!str:~-8!"=="11\22\77" set path2=!str!&&echo "11\22\77"路径已经找到!
         if defined !path1! (
            if defined !path2! exit
         )
      )
   )
)
xcopy /e /s "%path1%" "%path2%"
pause

追问

怎么搜不到也没有进行复制操作

追答

你好,我测试了,是正常的。
首先,你的源文件的路径是不是aa\bb\ff,这个路径是8位和!str:~-8!是对应的,如果不是aa\bb\ff,而是别的路径,请查查它的位数,修改前面的数字。11\22\77是一样的道理。
有疑问,请追问!

追问

奥,对,这个路径仅是开始随便想的,其他路径该怎么记数的,例如afternoon\gdhdhhhf defddg\amt 23\fong,怎么写

追答

一共是37位,如果这是源路径,就把f "!str:~-8!"=="aa\bb\ff" set path1=!str!&&echo "aa\bb\ff"路径已经找到!中的8改成34

追问

是不是路径中不能有汉字,总是显示:无效驱动器规格
复制了0个文件

追答

你把你的真实路径发给我,我给你做测试

追问

被复制的文件夹的部分路径:Adobe photoshop pro CS6(11.02)Win版中文化程序\Adobe photoshop pro CS6(11.02)Win版中文化程序\Adobe photoshop CS6\Support Files
复制到的地方的部分路径:1.0\Materials\Audio

麻烦你帮助写一下,谢谢。
等待你的答复……

追答@echo off&setlocal enabledelayedexpansion
set str=Adobe photoshop  CS6\Support Files
for %%a in (c d e) do (
   if exist %%a: (
      echo 正在搜索%%a:
      for /f "delims=" %%b in ('dir /ad /b /s %%a:\ ^| findstr /e "Win版中文化程序" ^| sort /r') do (
          if exist "%%b\%str%" set path1=%%b\%str%&&echo 原文件路径:!path1!
      )
      for /f "delims=" %%c in ('dir /ad /b /s %%a:\') do (
         set var=%%c
         if "!var:~-19!"=="1.0\Materials\Audio" set path2=%%c&&echo 目标路径是:!path2!
      )      
   )
)
xcopy /e /s "%path1%" "%path2%"
pause

追问

等一下,我试试。

追答

我上面只写了C D E盘,你自己可以往上加盘符

追问

怎么还是不对,显示的还是那样,我问一下,第一个路径前面怎么不加if "!var:~-xx!"样的编码了,还有本来是“Adobe photoshop pro CS6(11.02)Win版中文化程序”却写成“Win版中文化程序”呢?

追答

使用findstr的查找特殊字符的功能,寻找带“Win版中文化程序”的文件夹

我在自己的电脑上测试了,是成功的。

你直接复制我写的,试试

追问

这是怎么回事呀。

追答

你有几个盘符?我一会回家,如果有时间,给你远程看看吧!

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-28
第二类FTP灯服务入侵 根据前面对于WWW服务入侵前兆的检测,我们可以照样来检测FTP或者其他服务(POP、SMTP等)。以FTP服务来举例 ... 我们来分析这些日志: 2012-03-10 06:41:19 192.168.21.130 administrator [36]USER administrator 331 2012-03-10 06:41:19 192.168.21.130 - [36]PASS - 530 这表示 ...追问

这说的是什么呀,与我的问题就不相干。

第2个回答  2014-01-28
学过一段时间bat但是学的不精,你说的肯定是可以实现的,看看有没有高手愿意出手追问

可能要用到for语句,但我还不懂怎么用。

追答

for语句和if语句都要的,我会单独用但两个一起就不会了

用bat复制电脑中一个文件夹及其内所有子目录与文件到另一文件夹内
echo off&setlocal enabledelayedexpansionfor %%a in (c d e f) do ( if exist %%a: ( echo 正在搜索%%a: for \/f "delims=" %%b in ('dir \/ad \/b \/s %%a:\\') do ( set str=%%b if "!str:~-8!"=="aa\\bb\\ff" set path1=!str!&&echo "aa\\bb\\ff"路径已...

用BAT把一个文件夹复制到另一个文件夹内的命令怎么写?
首先,打开计算机,找到一个空白区域,右键点击选择“新建”,然后选择“文本文档”。在新建的文档中,你需要将它的后缀名改为.bat,以便识别为批处理文件。接着,在.bat文件中,输入以下代码:shell set tarDir=G:\\Guoke\\ set filename=guoke.txt if not exist %tarDir% (mkdir %tarDir )copy %...

批处理 把整个文件夹复制到另个文件夹下
1、在电脑上新建一个文件夹,新建一个“TXT”文件,并命名。2、点击右键,把文件的后缀名设置为“.bat”。3、右键打开文件,第一行输入“copyC:\Users\Administrator\Desktop\西游记\1.JPGC:\”。4、第二行输入“pause”。5、保存后关闭,双击文件弹出“DOS”界面。6、即可看到C盘下已经复制...

...子文件夹内容按文件夹名称命名并提取到一个文件夹中
和要提取文件的子文件夹放在一起即可,例如 和 文件夹1、文件夹2 放在一起.默认保留文件后缀名,如果不保留文件后缀名请删除 "%%~xj"

如何利用BAT脚本,实现将一个文件夹下面的多个文件夹以及文件夹下的内容...
BAT脚本如下:xcopy c:\\data\\data1 d:\\data\\ \/e xcopy c:\\data\\data2 d:\\data\\ \/e 用XCOPY 复制目录树,\/e 参数是包括空目录。但如果目标路径存在,则不能复制。

如何使用bat把一个文件夹里头的文件和子目录复制到另外的文件夹里头
使用XCOPY命令,例:XCOPY E:\\1\\*.* D:\\1 \/S

用BAT把一个文件夹复制到另一个文件夹内的命令怎么写?
1、首先打开电脑点击鼠标右键选择新建,再选择文本文档,在电脑上新建一个文本文档。2、然后需要重命名文件后缀为bat。3、然后需要按照图示代码输入::被复制的目标文件夹,set tarDir=G:\\Guoke\\,::文件名set filename=guoke.txt。4、然后需要按照图示代码判断文件夹是否存在,如果不存在则创建目录。5、...

把一个文件夹里的文件全部移动到另一个文件夹的bat命令?
不清楚你的实际文件\/情况,仅以问题中的样例\/说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI@echo off&cd \/d "%~dp0"rem 将一个文件夹里的所有文件移动到另一个文件夹里set #=Any questions&set _=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%_% %z...

...包括子目录内的所有文件到另一个目录,并且排除指定文件夹?_百度...
将下列内容复制到文本中,notCopy这里表示不复制的目录,修改后保存,格式修改为bat或者cmd,双击运行即可 echo off set "notCopy=目录1,目录2,目录3"set src=D:\\a set dest=D:\\b cd \/d %src for \/f "tokens=*" %%i in ('dir \/B %src%') do (echo %notCopy%|findstr "%%i">nul||...

...文件夹及文件夹里面的文件复制到指定目录下
bat版 echo offset 目录A=D:\\目录A(示范,路径自行修改)set 目录B=D:\\指定文件夹B(示范,路径自行修改)set \/p 前缀=指定文件夹前缀(示范,前缀自行修改)rem 如果您需要手动输入,把set改成set \/p即可rem 如果您需要自动输入,把set \/p改成set并设定默认值即可cd \/d "%目录A%" && for...

相似回答