找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27231|回复: 11

[文件操作] 批处理复制命令,不管是否成功,如何显示被复制的源文件名字

[复制链接]
发表于 2013-3-18 13:52:46 | 显示全部楼层 |阅读模式
例如我要复制的文件有 ~几个百个图片不同命名方式。

  1. set a=%~dp0images\
  2. set b=%~dp0images\images\

  3. set ca_a=%~dp0\a\
  4. set ca_b=%~dp0\b\

  5. copy /y "%a%a.png"        "%ca_a%"
  6. copy /y "%b%b.png"        "%ca_b%"
复制代码
于是只有这么个结果,我想让其提示我,不管是否成功都让其 显示a.png复制成功或者b.png复制失败

我也尝试添加

  1. IF ERRORLEVEL 1 ECHO 文件拷贝失败
  2. IF ERRORLEVEL 0 ECHO 成功拷贝文件
复制代码
当时不理想
如果复制东西,多的话,代码就变繁琐了。
发表于 2013-3-18 14:41:45 | 显示全部楼层
  1. @echo off
  2. set a=%~dp0images
  3. set b=%~dp0images\images

  4. set ca_a=%~dp0\a\
  5. set ca_b=%~dp0\b\

  6. for %%a in (%a%\*.png) do (
  7.     copy /y "%%a" "%ca_a%" && echo Copy %%a successful || echo Copy %%a fail
  8. )
  9. for %%a in (%b%\*.png) do (
  10.     copy /y "%%a" "%ca_b%" && echo Copy %%a successful || echo Copy %%a fail
  11. )
  12. pause
复制代码
 楼主| 发表于 2013-3-18 20:36:03 | 显示全部楼层
回复 2# BAT-VBS


    研究了会, 不过, 貌似理解错了, 不过可能是我说明的不全, 不过,还是谢谢你,

你这个是 把images内的文件全部复制到a
把images\images内的文件全部复制到b
 楼主| 发表于 2013-3-18 20:40:23 | 显示全部楼层
回复 2# BAT-VBS



我截取一部分代码, 以下省略,都类似这种该文件复制到指定路径的文件内,

请问, 能用for循环进行吗?

  1. set mx=%~dp0mx\
  2. set mx2=%~dp0mx\mx2\
  3. ::日历插件
  4. set cl_mx=%~dp0\Flyme 2.x\com.android.calendar\640_960_16\res\drawable-xhdpi\
  5. set cl_mx2=%~dp0\Flyme 2.x\com.android.calendar\800_1280_16\res\drawable-xhdpi\
  6. ::mx
  7. copy /y  "%mx2%calendar_widget_background.png"         "%cl_mx%"
  8. ::mx2
  9. copy /y "%mx2%calendar_widget_background.png"        "%cl_mx2%"

  10. ::搜索插件
  11. set qu_mx=%~dp0\Flyme 2.x\com.android.quicksearchbox\640_960_16\res\drawable-xhdpi\
  12. set qu_mx2=%~dp0\Flyme 2.x\com.android.quicksearchbox\800_1280_16\res\drawable-xhdpi\
  13. ::mx
  14. copy /y "%mx%search_floater_normal.png"                 "%qu_mx%"
  15. copy /y "%mx%search_floater_pressed.png"                 "%qu_mx%"
  16. ::mx2
  17. copy /y "%mx2%search_floater_normal.png"                 "%qu_mx2%"

  18. ::新闻天气插件
  19. set ge_mx=%~dp0\Flyme 2.x\com.google.android.apps.genie.geniewidget\640_960_16\res\drawable-xhdpi\
  20. set ge_mx2=%~dp0\Flyme 2.x\com.google.android.apps.genie.geniewidget\800_1280_16\res\drawable-xhdpi\
  21. ::mx
  22. copy /y "%mx%appwidget_bg_holo.9.png"                         "%ge_mx%"
  23. ::mx2
  24. copy /y "%mx2%ppwidget_bg_holo.9.png"                         "%ge_mx2%"
复制代码
发表于 2013-3-18 22:57:33 | 显示全部楼层
回复 4# abc02


    第7行是%mx2%还是%mx%?
 楼主| 发表于 2013-3-19 08:28:04 | 显示全部楼层
回复 5# BAT-VBS


    %mx2%对的,

是将特定的文件, 复制到指定的路径下,
发表于 2013-3-19 10:28:28 | 显示全部楼层
回复 6# abc02
  1. set mx=%~dp0mx\
  2. set mx2=%~dp0mx\mx2\
  3. ::日历插件
  4. set cl_mx=%~dp0\Flyme 2.x\com.android.calendar\640_960_16\res\drawable-xhdpi\
  5. set cl_mx2=%~dp0\Flyme 2.x\com.android.calendar\800_1280_16\res\drawable-xhdpi\
  6. for %%a in ("%mx2%calendar_widget_background.png") do(
  7.     for %%b in ("%cl_mx%" "%cl_mx2%") do (
  8.         copy /y %%a %%b && echo Copy %%a successful || echo Copy %%a fail
  9.     )
  10. )
复制代码
 楼主| 发表于 2013-3-19 21:24:57 | 显示全部楼层
本帖最后由 abc02 于 2013-3-19 21:26 编辑

回复 7# BAT-VBS


     试验了下, 感觉不对,  如何你这个代码循环的话是将 这一个文件 分别复制到指定的文件夹内


  如果我将下面向套到你给出的循环的话

  1. set mx=%~dp0mx\
  2. set mx2=%~dp0mx\mx2\
  3. cho 桌面
  4. set la_mx=%~dp0\Flyme 2.x\com.android.launcher\640_960_16\res\drawable-xhdpi\
  5. set la_mx2_400=%~dp0\Flyme 2.x\com.android.launcher\800_1280_16\res\drawable-sw400dp-xhdpi\
  6. set la_mx2=%~dp0\Flyme 2.x\com.android.calendar\800_1280_16\res\drawable-xhdpi\
  7. ::mx
  8. copy /y "%mx%bg_open_folder.9.png"                         "%la_mx%"
  9. copy /y "%mx%bnt_homepage_bottom_background.9.png"         "%la_mx%"
  10. copy /y "%mx%ic_home_arrows_gray.png"                         "%la_mx%"
  11. copy /y "%mx%ic_home_arrows_highlight.png"                 "%la_mx%"
  12. copy /y "%mx%ic_launcher_folder.png"                         "%la_mx%"
  13. ::mx2
  14. copy /y "%mx2%ic_home_arrows_gray.png"                         "%la_mx2_400%"
  15. copy /y "%mx2%ic_home_arrows_highlight.png"         "%la_mx2_400%"
  16. copy /y "%mx2%ic_launcher_folder.png"                         "%la_mx2_400%"
  17. copy /y "%mx2%bg_open_folder.9.png"                         "%la_mx2%"
  18. copy /y "%mx2%bnt_homepage_bottom_background.9.png"         "%la_mx2%"
  19. copy /y "%mx2%ic_app_delete_a_pressed.png"                 "%la_mx2%"
复制代码

  1. echo 桌面
  2. set la_mx=%~dp0\Flyme 2.x\com.android.launcher\640_960_16\res\drawable-xhdpi\
  3. set la_mx2_400=%~dp0\Flyme 2.x\com.android.launcher\800_1280_16\res\drawable-sw400dp-xhdpi\
  4. set la_mx2=%~dp0\Flyme 2.x\com.android.launcher\800_1280_16\res\drawable-xhdpi\

  5. for %%a in ("%mx%bg_open_folder.9.png" "%mx%bnt_homepage_bottom_background.9.png" "%mx%ic_home_arrows_gray.png" "%mx%ic_home_arrows_highlight.png" "%mx%ic_launcher_folder.png" "%mx2%ic_home_arrows_gray.png" "%mx2%ic_home_arrows_highlight.png" "%mx2%ic_launcher_folder.png" "%mx2%bg_open_folder.9.png" "%mx2%bnt_homepage_bottom_background.9.png" "%mx2%ic_app_delete_a_pressed.png") do (
  6.     for %%b in ("%la_mx%" "%la_mx2_400%" "%la_mx2%") do (
  7.         copy /y %%a %%b>nul 2>nul && echo Copy %%a successful || echo Copy %%a fail
  8.     )
  9. )
复制代码
其结果,就是mx2里同名文件替换了其mx里的同名文件

我想要的结果是

mx里的文件 复制到指定文件夹内
mx2里的一些文件复制到 指定的文件夹内
mx2里的另些文件复制到 指定文件夹2内(该文件内比较特殊,有俩个路径,其余的都只有一个路径)


总感觉for 应该行不通的吧,,,我这要求。。。
 楼主| 发表于 2013-3-19 21:30:52 | 显示全部楼层
回复 7# BAT-VBS


   
顺便问下, 有啥开关可以, 只截取文件名+扩张名吗。。。

长长的一条路径名+文件名+提示,头都看晕了
发表于 2013-3-19 23:14:04 | 显示全部楼层
回复 8# abc02


    我是按照你在4楼的前9行代码写的
发表于 2013-3-19 23:15:12 | 显示全部楼层
回复 9# abc02
  1. @echo off
  2. for %%a in (c:\Test\a.txt) do (
  3.     echo %%~nxa
  4. )
复制代码
 楼主| 发表于 2013-3-20 01:05:04 | 显示全部楼层
回复 10# BAT-VBS


    哦, 谢啦, 我我再研究研究
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 01:34 , Processed in 0.020003 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表