Board logo

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

作者: abc02    时间: 2013-3-18 13:52     标题: 批处理复制命令,不管是否成功,如何显示被复制的源文件名字

例如我要复制的文件有 ~几个百个图片不同命名方式。
  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 成功拷贝文件
复制代码
当时不理想
如果复制东西,多的话,代码就变繁琐了。
作者: BAT-VBS    时间: 2013-3-18 14:41

  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
复制代码

作者: abc02    时间: 2013-3-18 20:36

回复 2# BAT-VBS


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

你这个是 把images内的文件全部复制到a
把images\images内的文件全部复制到b
作者: abc02    时间: 2013-3-18 20:40

回复 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%"
复制代码

作者: BAT-VBS    时间: 2013-3-18 22:57

回复 4# abc02


    第7行是%mx2%还是%mx%?
作者: abc02    时间: 2013-3-19 08:28

回复 5# BAT-VBS


    %mx2%对的,

是将特定的文件, 复制到指定的路径下,
作者: BAT-VBS    时间: 2013-3-19 10: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. )
复制代码

作者: abc02    时间: 2013-3-19 21:24

本帖最后由 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 应该行不通的吧,,,我这要求。。。
作者: abc02    时间: 2013-3-19 21:30

回复 7# BAT-VBS


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

长长的一条路径名+文件名+提示,头都看晕了
作者: BAT-VBS    时间: 2013-3-19 23:14

回复 8# abc02


    我是按照你在4楼的前9行代码写的
作者: BAT-VBS    时间: 2013-3-19 23:15

回复 9# abc02
  1. @echo off
  2. for %%a in (c:\Test\a.txt) do (
  3.     echo %%~nxa
  4. )
复制代码

作者: abc02    时间: 2013-3-20 01:05

回复 10# BAT-VBS


    哦, 谢啦, 我我再研究研究




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