Board logo

标题: [文件操作] [已解决]批处理如何将C盘的全部文件夹和文件并按原结构复制到 其他指定目录 [打印本页]

作者: 6508as    时间: 2013-9-7 18:58     标题: [已解决]批处理如何将C盘的全部文件夹和文件并按原结构复制到 其他指定目录

本帖最后由 pcl_test 于 2016-10-28 14:15 编辑

原意是这样的:我有多个硬盘,它们分别装有许多资料。我的问题是我电脑只装了3个硬盘,其余的硬盘无法再装了。我想复制这些硬盘的目录结构和全部文件名(注意:是文件名。不是文件),方便查看。

打开复制后的C盘与原始的C盘完全一样,不同的是文件只是一个文件名。

XCOPY c:\ d:\abc 这个命令只能复制目录,不能复制文件名 请:高手帮忙!!!
作者: 林小七    时间: 2013-9-7 21:02

为什么不做一个gho镜像??如果你要全部复制,好像要在pe启动才行~不能直接复制
作者: cjw00529017    时间: 2013-9-7 21:37

努力学习 成为高手
作者: paladinjin    时间: 2013-9-7 22:35

  1. copy c:/*.* d:/abc
复制代码

作者: 6508as    时间: 2013-9-7 23:11

首先谢谢!!!
回复paladinjin :代码未能执行。
作者: 6508as    时间: 2013-9-8 00:15

本帖最后由 6508as 于 2013-9-8 00:25 编辑

补充说明:

      我有7个硬盘,分别编号为: A磁盘  B磁盘  C磁盘  D磁盘 E磁盘  F磁盘 G磁盘. 其中A磁盘为主磁盘。其余的磁盘全部格式化为逻辑磁盘。除了A磁盘分区为(c盘 d盘 e盘)外。其余磁盘皆为一个分区。

    现在我的电脑上挂了:A磁盘  B磁盘  C磁盘 。

    先把B磁盘  C磁盘取下来。挂上D磁盘 E磁盘。 现在要做的是:把 D磁盘 的全部目录和全部文件名【按原始的结构】复制到C盘的一个文件夹内(文件夹名为:复制的D磁盘);
    同样把 E磁盘 的全部目录和全部文件名【按原始的结构】复制到C盘的一个文件夹内(文件夹名为:复制的E磁盘)。
   
    把D磁盘 E磁盘取下来,然后挂上F磁盘 G磁盘,同样的方法复制完后,取下F磁盘 G磁盘,
   
    最后挂上B磁盘  C磁盘。这样我就可以随时方便的查看哪个磁盘存储了哪些资料,当我需要的时候我就把哪个磁盘挂上。

    现在我的问题是: XCOPY c:\ d:\111  这个命令只能复制目录,而不能复制文件名。
    要求是:按照原始的目录结构完整的复制一个磁盘, 只复制目录和文件名 , 【不是复制文件, 是复制文件名】。当打开这个复制磁盘的文件夹时,就像是打开了原始的磁盘一样,唯一的区别就是这里面的文件不是原始的文件,仅仅是一个文件名。

    望高手赐教!!!先谢谢了!
   
    XCOPY d:\ c:\复制的D磁盘 ???
    XCOPY e:\ c:\复制的E磁盘 ???
作者: 6508as    时间: 2013-9-12 16:45

敬请各位高手出手帮帮忙啊! 我觉的这个问题应该可以用批处理实现的,不过我对cmd不太熟悉,如果本题无解,烦请告知一下。谢谢了!
作者: apang    时间: 2013-9-12 19:21

"不是复制文件, 是复制文件名" 如何理解?
以下生成0字节的文件,试试
  1. @echo off
  2. set "Drv=D:" & set "Folder=c:\复制的D磁盘"
  3. xcopy /hte %Drv%\ "%Folder%\"
  4. for /f "delims=" %%a in ('dir /a-d /b /s %Drv%\*') do (
  5.     set "Name=%%a"
  6.     setlocal enabledelayedexpansion
  7.     set "Name=%Folder%!Name:~2!"
  8.     cd .>"!Name!"
  9.     endlocal
  10. )
  11. pause
复制代码

作者: 6508as    时间: 2013-9-12 22:59

回复 8# apang

      尊敬的apang:您好!!! 非常感谢您的回复,您理解的非常正确,并且您的答案同样非常的正确。 我本以为会无解的,可见真是“人外有人,天外有天”, 高手就是高手,出手不凡!再一次说声:“谢谢您!!!”最后,祝您:工作顺利!事事顺心!事事如意!

作者: 6508as    时间: 2013-9-13 19:04

尊敬的apang:您好!

    谢谢您昨天的回复! 我原来是用:“XCOPY d:\ c:\d盘的目录\ /s /t /e”和“dir d:/s >c:\d盘的文件.txt”这二个命令来备份磁盘的,查看起来比较麻烦,现在您把它们合二为一,查看起来方便多了。但是也有一个小缺陷,就是文件的大小看不到。
    能不能判断每个文件的大小,然后附在文件名的后面

     不过我也不知道是否可行,可是惭愧的很,由于自己的水平有限而做伸手党唉。。。因此占用了您许多宝贵的时间,如果您有时间的话就帮忙看看,如果没有时间的话就做罢好了。总之是谢谢您了!祝好运相伴左右!
作者: apang    时间: 2013-9-13 22:38

本帖最后由 apang 于 2013-9-13 22:40 编辑

回复 10# 6508as


    相当蛋疼的浮点运算,试试吧
  1. @echo off
  2. set "Drv=D:" & set "Folder=c:\复制的D磁盘"
  3. xcopy /hcte %Drv%\* "%Folder%\" 2>nul
  4. for /f "delims=" %%a in ('dir /a-d /b /s %Drv%\*') do (
  5.     set "Name=%%~dpna"
  6.     setlocal enabledelayedexpansion
  7.     set "tmp=%%~za00"
  8.     for %%b in (16 8 4 2 1) do (
  9.         if not "!tmp:~%%b!"=="" set /a Len+=%%b&set "tmp=!tmp:~%%b!"
  10.     )
  11.     set "num=%%~za00" & set /a n = Len - 3
  12.     for /l %%b in (!n! -1 1) do (
  13.         set "s=!num:~,-%%b!"
  14.         if "!s:~,1!"=="0" set "s=!s:~1!"
  15.         set /a m=s%%1024,s/=1024
  16.         set "Size=!Size!!s!"
  17.         set "num=!m!!num:~-%%b!"
  18.     )
  19.     if !Len! lss 5 (
  20.         set "Size=00!Size!" & set "Size=!Size:~-1!"
  21.     ) else if "!Size:~,1!"=="0" set "Size=!Size:~1!"
  22.     set "Name=%Folder%!Name:~2![!Size:~,-1!.!Size:~-1!KB]%%~xa"
  23.     cd .>"!Name!"
  24.     endlocal
  25. )
  26. pause
复制代码

作者: 6508as    时间: 2013-9-14 04:37

回复 11# apang


            非常完美的答案,谢谢您! 感激之情悠然而生。祝:幸福永远陪伴左右!




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