Board logo

标题: [文本处理] [已解决]批处理如何实现复制指定文本文件到多个文件夹并修改文本里的指定字符串 [打印本页]

作者: zenkifox    时间: 2016-10-24 12:52     标题: [已解决]批处理如何实现复制指定文本文件到多个文件夹并修改文本里的指定字符串

请大神在我的源文件里帮忙改改
已经实现的功能:
点击change.bat会以a文件夹为模板复制1-9个文件夹,同时每个文件夹里面都包含setup.bat
想要实现的功能:
1.生成的文件夹是0001-1000。(我的set /a orderNumMin=1   set /a orderNumMax=9写0001到1000无效,不是4位的,我要4位)这个要求不是必须,可有可无
2.0001  0002  0003 0004.....1000  这1千个文件夹,里面虽然都已经包含setup.bat,但是我需要0001文件夹里的setup.bat中的6776037-0000替换为6776037-0001
0002文件夹里的setup.bat中的6776037-0000替换为6776037-0002
0003文件夹里的setup.bat中的6776037-0000替换为6776037-0003
1000文件夹里的setup.bat中的6776037-0000替换为6776037-1000
以此类推,共1000份


我目前已经写了部分,在附件里,各位大神拜托修改了,满足我要求的请给zenkifox@126.com发邮件领赏钱人民币20元作为感谢
作者: pcl_test    时间: 2016-10-24 13:11

本帖最后由 pcl_test 于 2016-10-24 13:14 编辑
  1. set /a orderNumMin=10001
  2. set /a orderNumMax=11000
  3. SETLOCAL ENABLEDELAYEDEXPANSION
  4. for /l %%k in (%orderNumMin% 1 %orderNumMax%) do (
  5.     set n=%%k
  6.     md !n:~1!
  7.     (
  8.         echo;cd "%%~dp0"
  9.         echo;rem此处修改当前机器编号
  10.         echo;set LOCAL_MACHINE=6776037-!n:~1!
  11.         more +15 "%~f0"
  12.     )>"!n:~1!\setup.bat"
  13. )
  14. pause&exit
  15. ::
  16. rem此处修改后面的数字,默认是10,最大是99
  17. set /a orderNumMax=99
  18. set /a orderNumMin=1
  19. SETLOCAL ENABLEDELAYEDEXPANSION
  20. for /l %%k in (%orderNumMin% 1 %orderNumMax%) do (
  21. md web%%k
  22. set TEM_ORDER=00%%k
  23. set TEM_ORDER2=!TEM_ORDER:~-2,2!
  24. copy moban\WebIE.exe web%%k\WebIE%%k.exe
  25. copy moban\userconf.ini web%%k\userconf.ini
  26. copy moban\conf.exe web%%k\conf_%LOCAL_MACHINE%!TEM_ORDER2!.exe
  27. call web%%k\conf_%LOCAL_MACHINE%!TEM_ORDER2!.exe
  28. del web%%k\conf_%LOCAL_MACHINE%!TEM_ORDER2!.exe
  29. )
  30. SETLOCAL DISABLEDELAYEDEXPANSION
  31. %~d0
  32. cd %~dp0
  33. exit
复制代码

作者: zenkifox    时间: 2016-10-24 13:35

回复 2# pcl_test


    效率太高了,万分感谢,来领赏吧,有效
作者: aa77dd@163.com    时间: 2016-10-24 13:52

虽然已结帖, 与其删掉, 不如发出来吧

MAKE.CMD
不同于 2 楼 的 more 输出方式, 这里采用 copy 文件拼接方式, setup_main.bat 是所有目标文件的后面的公共部分, make 只 echo 输出首行机器号
  1. @echo off
  2. set /a orderNumMin=10001
  3. set /a orderNumMax=11000
  4. SETLOCAL ENABLEDELAYEDEXPANSION
  5. for /L %%k in (%orderNumMin% 1 %orderNumMax%) do (
  6. set "dirName=%%k"
  7. set "dirName=!dirName:~1!"
  8. title !dirName! processing...
  9. 2>nul md "!dirName!"
  10. >"!dirName!\setup.bat" (echo;set "LOCAL_MACHINE=6776037-!dirName!")
  11. >nul copy /y "!dirName!\setup.bat" + "a\setup_main.bat" "!dirName!\setup.bat"
  12. )
  13. SETLOCAL DISABLEDELAYEDEXPANSION
  14. cd /d "%~dp0"
  15. pause
  16. exit
复制代码
setup_main.bat  放在 a 目录中
  1. cd /d "%~dp0"
  2. rem 此处修改后面的数字,默认是10,最大是99
  3. set /a orderNumMax=99
  4. set /a orderNumMin=1
  5. SETLOCAL ENABLEDELAYEDEXPANSION
  6. for /l %%k in (%orderNumMin% 1 %orderNumMax%) do (
  7. md web%%k
  8. set TEM_ORDER=00%%k
  9. set TEM_ORDER2=!TEM_ORDER:~-2,2!
  10. copy moban\WebIE.exe web%%k\WebIE%%k.exe
  11. copy moban\userconf.ini web%%k\userconf.ini
  12. copy moban\conf.exe web%%k\conf_%LOCAL_MACHINE%!TEM_ORDER2!.exe
  13. call web%%k\conf_%LOCAL_MACHINE%!TEM_ORDER2!.exe
  14. del web%%k\conf_%LOCAL_MACHINE%!TEM_ORDER2!.exe
  15. )
  16. SETLOCAL DISABLEDELAYEDEXPANSION
  17. %~d0
  18. cd %~dp0
  19. exit
复制代码

作者: zenkifox    时间: 2016-10-24 14:13

回复 4# aa77dd@163.com


    同样感谢你!!
作者: huyou96    时间: 2016-10-24 15:40

mark

学习学习。




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