无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5878|回复: 9
打印 上一主题 下一主题

有没有办法实现批量复制文件到另外一个分区相同目录?

[复制链接]
跳转到指定楼层
1#
发表于 2012-6-19 14:42:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
非常感谢pznpt 提供的代码,问题完美解决!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

例如我自己将要复制的文件弄了一个记事本LIST.TXT,能否将LIST.TXT里面的文件复制到量外一个分区的相同目录?

例如LIST.TXT的内容(当然我可能还会使用很多不同的目录)
  1. C:\PETOOLS\图文工具\Boilsoft_Screen_Recorder.WIM
  2. C:\PETOOLS\图文工具\Easy_GIF_Animator.WIM
  3. C:\PETOOLS\图文工具\Foxit_Editor.WIM
  4. C:\PETOOLS\图文工具\Foxit_Reader.WIM
  5. C:\PETOOLS\图文工具\WPS2012.WIM
  6. C:\PETOOLS\图文工具\搜狗手写.exe
复制代码
我能否将其复制到F盘的相同目录?有没有比较简便的bat代码?谢谢各位了

[ 本帖最后由 zhs509 于 2012-6-20 13:41 编辑 ]
2#
发表于 2012-6-20 12:02:37 | 只看该作者
试试看这样行不:
  1. @echo off
  2. for /f "delims=" %%a in (list.txt) do (
  3.   xcopy "%%a" "f:%%~pa" /s /y
  4. )
  5. pause
复制代码
回复

使用道具 举报

3#
 楼主| 发表于 2012-6-20 13:39:53 | 只看该作者

回复 #2 pznpt 的帖子

非常感谢,这正是我想要的。。。
回复

使用道具 举报

4#
发表于 2012-6-20 14:45:29 | 只看该作者
推荐pznpt为DOS区版主,很积极  很给力。
回复

使用道具 举报

5#
 楼主| 发表于 2012-6-20 18:15:36 | 只看该作者
文件复制的已经完美解决了,“%~dp0SETUP.CMD”复制到Y盘的路径能否转换为环境变量,这样的话,我目录就可以随意放置了
批处理后面几行要如何修改比较适合呢?
  1. @echo off
  2. color 0a
  3. cd /d "%~dp0"

  4. if exist %windir%\tools.txt (del /f /s /q %windir%\tools.txt)

  5. ::导出外置文件列表到%windir%\tools.txt,自己根据需要进行修改!
  6. echo %~dp0SETUP.CMD>>%windir%\tools.txt
  7. echo %~dp0图文工具\Boilsoft_Screen_Recorder.WIM>>%windir%\tools.txt
  8. echo %~dp0图文工具\Easy_GIF_Animator.WIM>>%windir%\tools.txt
  9. echo %~dp0图文工具\Foxit_Editor.WIM>>%windir%\tools.txt
  10. echo %~dp0图文工具\Foxit_Reader.WIM>>%windir%\tools.txt
  11. echo %~dp0图文工具\WPS2012.WIM>>%windir%\tools.txt
  12. echo %~dp0图文工具\搜狗手写.exe>>%windir%\tools.txt

  13. ::拷贝tools.txt列表文件到Y盘相同目录
  14. if exist Y:\ (
  15. for /f "delims=" %%i in (%windir%\tools.txt) do (xcopy "%%i" "Y:%%~pi" /s /y)
  16. )

  17. ::我这里路径设置不太好,若是当前路径比较随意。若复制到Y盘的,那么只会搜索固定路径的文件
  18. ::若能将%~dp0的内容直接替换盘符设置为新的环境变量进行调用就完美了
  19. set tp=%~dp0
  20. if exist "Y:\PETOOLS\SETUP.CMD" (set tp=Y:\PETOOLS)
  21. if exist "%~dp01.ICO" (copy /y "%~dp01.ICO" "%windir%\setup.ico")
  22. PECMD.EXE LINK %%desktop%%\加载更多外置,%windir%\system32\PECMD.EXE,EXEC "%tp%\SETUP.CMD",%windir%\setup.ico
复制代码

[ 本帖最后由 zhs509 于 2012-6-21 19:03 编辑 ]
回复

使用道具 举报

6#
发表于 2012-6-21 18:50:13 | 只看该作者
原帖由 zhs509 于 2012-6-20 18:15 发表
若是当前路径比较随意。若复制到Y盘的,那么只会搜索固定路径的文件


理解能力差,没太明白zhs509大大的意思,呵呵。。。

能举个实例说明下吗?
回复

使用道具 举报

7#
发表于 2012-6-21 18:52:09 | 只看该作者

回复 #4 xiaoy 的帖子

我权当您开玩笑来着,呵呵。。。
回复

使用道具 举报

8#
 楼主| 发表于 2012-6-21 19:01:48 | 只看该作者

回复 #7 pznpt 的帖子

我算是半开玩笑吧。。。

我希望的是能将"%~dp0"的路径盘符替换为Y盘,目录保持原来结构,不知道有没有办法呢?

能否将"%~dp0"的路径导出(例如导出到某个文件),替换盘符为Y盘,目录结构保持不变

例如我的目录为"C:\AA\PETOOLS",那么我希望可以自动改为"Y:\AA\PETOOLS"
回复

使用道具 举报

9#
发表于 2012-6-21 19:39:41 | 只看该作者

回复 #8 zhs509 的帖子

有点明白了,不知这样对不对:
---------------------------------------------分割线--------------------------------------------------
@echo off
set "tp=Y:%~p0"
if "%tp:~-1%"=="\" set "tp=%tp:~,-1%"
if exist "Y:\PETOOLS\SETUP.CMD" (set tp=Y:\PETOOLS)
if exist "%tp%\1.ICO" (copy /y "%tp%\1.ICO" "%windir%\setup.ico")
PECMD.EXE LINK %%desktop%%\加载更多外置,%windir%\system32\PECMD.EXE,EXEC "%tp%\SETUP.CMD",%windir%\setup.ico
---------------------------------------------分割线--------------------------------------------------
回复

使用道具 举报

10#
 楼主| 发表于 2012-6-21 19:50:16 | 只看该作者
原帖由 pznpt 于 2012-6-21 19:39 发表
有点明白了,不知这样对不对:
---------------------------------------------分割线--------------------------------------------------
@echo off
set "tp=Y:%~p0"
if "%tp:~-1%"=="\" set "tp=%tp:~,- ...

兄弟太强了,这是我想要的效果。。。

---------------------------------------------分割线--------------------------------------------------
@echo off
set "tp=Y:%~p0"
if "%tp:~-1%"=="\" set "tp=%tp:~,-1%"
::if exist "Y:\PETOOLS\SETUP.CMD" (set tp=Y:\PETOOLS)
if exist "%tp%\1.ICO" (copy /y "%tp%\1.ICO" "%windir%\setup.ico")
PECMD.EXE LINK %%desktop%%\加载更多外置,%windir%\system32\PECMD.EXE,EXEC "%tp%\SETUP.CMD",%windir%\setup.ico
---------------------------------------------分割线--------------------------------------------------

感觉现在的cmd代码相对比较完美一些了。。。

  1. @echo off
  2. color 0a
  3. cd /d "%~dp0"
  4. if exist %windir%\tools.txt (del /f /s /q %windir%\tools.txt)
  5. ::导出外置文件列表到%windir%\tools.txt,自己根据下面的内容进行修改即可!
  6. echo %~dp0SETUP.CMD>>%windir%\tools.txt
  7. echo %~dp0图文工具\Boilsoft_Screen_Recorder.WIM>>%windir%\tools.txt
  8. echo %~dp0图文工具\Easy_GIF_Animator.WIM>>%windir%\tools.txt
  9. echo %~dp0图文工具\Foxit_Editor.WIM>>%windir%\tools.txt
  10. echo %~dp0图文工具\Foxit_Reader.WIM>>%windir%\tools.txt
  11. echo %~dp0图文工具\WPS2012.WIM>>%windir%\tools.txt
  12. echo %~dp0图文工具\搜狗手写.exe>>%windir%\tools.txt
  13. cls
  14. ::判断空闲内存大小,若空闲内存小于500M不创建内存盘
  15. fbinst --meminfo-f
  16. cls
  17. if %errorlevel% LSS 500 (goto NEXT1)
  18. if exist Y:\ (goto NEXT1)
  19. ::统计文件类表文件大小,单位为字节
  20. setlocal enabledelayedexpansion
  21. for /f "tokens=1* delims= " %%a in (%windir%\tools.txt) do (
  22. set /a sizes=!sizes!+%%~za
  23. )
  24. set /a sum=sizes/1048576
  25. ::echo 外置文件大小为:%sum%MB
  26. ::要创建内存盘的空间设置的比文件略大一些,这里设置差不多大了5M
  27. set /a sum+=5
  28. ::echo 创建的内存盘大小为:%sum%MB
  29. ::ECHO 空闲内存大小为:%errorlevel%MB
  30. Imdisk.exe -a -s %sum%M -m Y: -p "/fs:fat /y /q"
  31. PECMD.EXE WAIT 1000
  32. :NEXT1
  33. ::拷贝tools.txt列表文件到Y盘相同目录
  34. if exist Y:\ (
  35. for /f "delims=" %%i in (%windir%\tools.txt) do (xcopy "%%i" "Y:%%~pi" /s /y)
  36. )
  37. set "tp=Y:%~p0"
  38. if "%tp:~-1%"=="" set "tp=%tp:~,-1%"
  39. if not exist Y:\ (set tp=%~dp0)
  40. if exist "%tp%\1.ICO" (copy /y "%tp%\1.ICO" "%windir%\setup.ico")
  41. PECMD.EXE LINK %%desktop%%\加载更多外置,%windir%\system32\PECMD.EXE,EXEC "%tp%\SETUP.CMD",%windir%\setup.ico
复制代码

[ 本帖最后由 zhs509 于 2012-6-21 19:57 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-26 20:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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