Board logo

标题: [文件操作] [求助]复制文件到指定目录下所有文件夹 [打印本页]

作者: bskyw    时间: 2009-6-19 00:42     标题: [求助]复制文件到指定目录下所有文件夹

问题如题,我是个菜鸟,在网上终于找到了一个,但是运行到输入目的盘符时无法往下进行,希望大大们给予帮助。文件如下:
  1. @echo off
  2. title 忆林子
  3. color 0a
  4. attrib -s -h -r tmp.忆林子
  5. del tmp.忆林子 /q
  6. cls
  7. :main
  8. set choice=
  9. set toDriver=
  10. set inputPath=
  11. set intpuFileName=
  12. cls
  13. echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  14. echo.
  15. echo                      c、复制指定文件到指定目录及其子目录
  16. echo                      d、删除指定盘符下及其子目录的指定文件
  17. echo                      q、退出
  18. echo.
  19. echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  20. set /p choice=[请输入数字选择操作]
  21. if /i "%choice%"=="" goto :main
  22. if /i "%choice%"=="c" goto :复制文件
  23. if /i "%choice%"=="d" goto :删除文件
  24. if /i "%choice%"=="q" goto :exit
  25. goto :main
  26. :复制文件
  27. cls
  28. echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  29. echo.
  30. echo                    如果要复制文件到D盘,则输入d
  31. echo                    你也可以输入d,e,f等等同时对这些分区操作。
  32. echo.
  33. echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  34. :输入目的分区
  35.   set /p toDriver=[请输入要复制到的盘符]
  36.   if /i "%inputPath%"=="" goto :输入目的分区
  37.   echo 正在读取文件列表,请稍候...
  38.   for /d %%i in (%toDriver%) do dir %%i:\ /s /d /b >>tmp.忆林子
  39.   attrib +s +h +r tmp.忆林子
  40.   cls
  41. :输入源路径
  42.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  43.   echo.
  44.   echo                     例如:c:\windows\system32
  45.   echo.
  46.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  47.   
  48.   set /p inputPath=[请输入要复制的源文件所在路径]
  49.   if /i "%inputPath%"=="" goto :输入源路径
  50. :输入源文件名
  51.   set /p intpuFileName=[请输入要复制的源文件名]
  52.   if /i "%intpuFileName%"=="" goto :输入源文件名
  53.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  54.   echo.
  55.   echo                      正在复制文件,请稍候...
  56.   echo.
  57.   echo              该过程可能会很久,要看你的文件夹的多少而定。
  58.   echo.
  59.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  60.   for /d %%i in (%toDriver%) do copy "%inputPath%\%intpuFileName%" "%%i:\%intpuFileName%" /q
  61.   for /f "tokens=* delims= " %%j in ('more tmp.忆林子') do copy "%inputPath%\%intpuFileName%" "%%j\%intpuFileName%" /q
  62.   cls
  63.   attrib -s -h -r tmp.忆林子
  64.   del tmp.忆林子 /q
  65.   cls
  66.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  67.   echo.
  68.   echo                              文件复制完毕
  69.   echo                                谢谢使用
  70.   echo.
  71.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  72.   set /p temp=按回车返回到主菜单...
  73.   goto :main
  74.   
  75.   
  76. :删除文件
  77. cls
  78. echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  79. echo.
  80. echo                    如果要删除d盘下的文件,则输入d
  81. echo                    你也可以输入d,e,f等等同时对这些分区操作。
  82. echo.
  83. echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  84. :目的分区
  85.   set /p toDriver=[请输入要删除文件所在的分区]
  86.   if /i "%toDriver%"=="" goto :目的分区
  87. :目标文件
  88.   set /p inputFileName=[请输入要删除文件的文件名]
  89.   if /i "%inputFileName%"=="" goto :目标文件
  90.   cls
  91.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  92.   echo.
  93.   echo                正在删除文件,请稍候...
  94.   echo.
  95.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  96.   for /d %%i in (%toDriver%) do del %%i:\%inputFileName% /s /q
  97.   cls
  98.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  99.   echo.
  100.   echo                              文件删除完毕...
  101.   echo                                谢谢使用
  102.   echo.
  103.   echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  104.   set /p temp=按回车返回到主菜单...
  105.   goto :main
  106. :exit
  107. exit
复制代码
谢谢5楼的大大,您的回得使输入问题以经得到解决,但现在好像只能输入 盘符,不能指定文件夹,我想要个能指定 复制到文件夹的
比如说,把文件复制到一个指定的路径,而不是根目录下,如:D:\123\(下面的所有文件里)
谢谢8楼的大大提出的议建,我会做出改正的

[ 本帖最后由 bskyw 于 2009-6-27 16:25 编辑 ]
作者: Batcher    时间: 2009-6-19 12:51

能介绍一下你为何要复制文件到指定目录下所有文件夹吗?
作者: bskyw    时间: 2009-6-19 17:43

呵呵,管理老大,是怕我用这东西装马吧, 我用这个其实没别的就是自己玩游戏时号太多了,挂机配置里捡取物品都设成一样的,一个一个粘贴太费事了,就想找这样的一个东西。
再说了用这个装马好像不行吧,这个是带有选择的。好像这个可以哦
for /r 目标文件夹 %%a in (.) do (
cd /d %%a
copy /y 要复制的文件 .
)
pause
再有就是喜欢用批处理,比用软件有意思多了,还能学到一些知识,(主要是怕有些软件带的流氓插件,木马,病毒)

[ 本帖最后由 bskyw 于 2009-6-19 17:48 编辑 ]
作者: bskyw    时间: 2009-6-20 22:59

怎么还是没人回复呢,???
作者: keen    时间: 2009-6-23 12:50     标题: 回复 5楼 的帖子

  1. :输入目的分区
  2.   set /p toDriver=[请输入要复制到的盘符]
  3.   if /i "%inputPath%"=="" goto :输入目的分区
  4.   echo 正在读取文件列表,请稍候...
  5.   for /d %%i in (%toDriver%) do dir %%i:\ /s /d /b >>tmp.忆林子
  6.   attrib +s +h +r tmp.忆林子
  7.   cls
复制代码
把代码中的%inputPath%改成%toDriver%

[ 本帖最后由 keen 于 2009-6-23 12:53 编辑 ]
作者: bskyw    时间: 2009-6-23 16:01

谢谢楼上的大大,可不可以改成
“输入要复制到的路径啊”,根目录下文件夹太多了,读取的速度太慢了。
作者: keen    时间: 2009-6-23 16:08     标题: 回复 7楼 的帖子

没明白你的意思,把什么改成“输入要复制到得路径啊”?
作者: bskyw    时间: 2009-6-23 21:59

因在上面那个例子,好像只能输入 盘符,不能指定文件夹,我想要个能指定 复制到文件夹的
作者: namejm    时间: 2009-6-23 22:09

  标题并不能完整地描述你的需求,请把你的具体要求发到顶楼正文中;如果有新的要求,也请一并更新至顶楼,然后在回帖中注明即可。像目前的情况,你有了什么新的要求,在顶楼没有任何反映,别人还得每个帖子都看完才能了解你的完整需求,不利于别人快速领会你的意图,从而让别人失去耐心,希望你能注意提问的技巧。




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