无忧启动论坛

标题: 有没有办法实现批量复制文件到另外一个分区相同目录? [打印本页]

作者: zhs509    时间: 2012-6-19 14:42
标题: 有没有办法实现批量复制文件到另外一个分区相同目录?
非常感谢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 编辑 ]
作者: pznpt    时间: 2012-6-20 12:02
试试看这样行不:
  1. @echo off
  2. for /f "delims=" %%a in (list.txt) do (
  3.   xcopy "%%a" "f:%%~pa" /s /y
  4. )
  5. pause
复制代码

作者: zhs509    时间: 2012-6-20 13:39
标题: 回复 #2 pznpt 的帖子
非常感谢,这正是我想要的。。。
作者: xiaoy    时间: 2012-6-20 14:45
推荐pznpt为DOS区版主,很积极  很给力。
作者: zhs509    时间: 2012-6-20 18:15
文件复制的已经完美解决了,“%~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 编辑 ]
作者: pznpt    时间: 2012-6-21 18:50
原帖由 zhs509 于 2012-6-20 18:15 发表
若是当前路径比较随意。若复制到Y盘的,那么只会搜索固定路径的文件


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

能举个实例说明下吗?
作者: pznpt    时间: 2012-6-21 18:52
标题: 回复 #4 xiaoy 的帖子
我权当您开玩笑来着,呵呵。。。
作者: zhs509    时间: 2012-6-21 19:01
标题: 回复 #7 pznpt 的帖子
我算是半开玩笑吧。。。

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

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

例如我的目录为"C:\AA\PETOOLS",那么我希望可以自动改为"Y:\AA\PETOOLS"
作者: pznpt    时间: 2012-6-21 19:39
标题: 回复 #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
---------------------------------------------分割线--------------------------------------------------
作者: zhs509    时间: 2012-6-21 19:50
原帖由 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 编辑 ]




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3