用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语句都要的,我会单独用但两个一起就不会了

相似回答