Board logo

标题: [文件操作] 【已解决】求优化BAT代码生成当天日期的文件夹并进行操作 [打印本页]

作者: rockjean    时间: 2019-3-26 13:12     标题: 【已解决】求优化BAT代码生成当天日期的文件夹并进行操作

本帖最后由 rockjean 于 2019-3-27 19:47 编辑

根据工作需要编写了如下代码,不知是否还可以更加精简?
  1. @echo off
  2. date /t>date-of-today.txt
  3. for /f "tokens=1" %%i in (date-of-today.txt) do echo %%i>new-style-date.txt
  4. for /f "tokens=1-3 delims=/" %%i in (new-style-date.txt) do (
  5. mkdir "%%i %%j %%k"
  6. copy jerry.cmd "%%i %%j %%k"\swap-file.cmd
  7. copy data.txt "%%i %%j %%k"
  8. copy model.pdf "%%i %%j %%k"
  9. del date-of-today.txt&del new-style-date.txt
  10. cd "%%i %%j %%k")
  11. for /f "skip=14 tokens=*" %%1 in (swap-file.cmd) do echo %%1 >> rockjean.cmd
  12. del swap-file.cmd
  13. exit
  14. :
  15. @echo off
  16. :choice
  17. choice /C FQ /M "复制模版请按F,取消任务请按Q"
  18. if errorlevel 2 goto end
  19. if errorlevel 1 goto file
  20. :
  21. :reborn
  22. copy rockjean.cmd reborn.txt
  23. for /f "skip=23 tokens=*" %%1 in (reborn.txt) do echo %%1 >> second-swap.txt
  24. ren second-swap.txt reborn.cmd
  25. del reborn.txt
  26. del rockjean.cmd
  27. :
  28. :file
  29. for /f "skip=1 tokens=1,2,3" %%i in (data.txt) do copy model.pdf "%%i %%j%%k.pdf"
  30. ping 127.1 -n 2 >nul
  31. cls
  32. if errorlevel 1 echo 复制失败了,请检查哪里出了问题!
  33. if errorlevel 0 echo 恭喜你,复制成功啦!
  34. ping 127.1 -n 2 >nul
  35. cls
  36. goto reborn
  37. :
  38. @echo off
  39. :start
  40. choice /C BQ /M "复制空白请按B,取消任务请按Q"
  41. if errorlevel 2 goto end
  42. if errorlevel 1 goto blank
  43. :
  44. :blank
  45. for /f "skip=1 tokens=1" %%i in (data.txt) do copy model.pdf "%%i 空白.pdf"
  46. ping 127.1 -n 2 >nul
  47. cls
  48. if errorlevel 1 echo 复制失败了,请检查哪里出了问题!
  49. if errorlevel 0 echo 恭喜你,复制成功啦!
  50. ping 127.1 -n 2 >nul
  51. goto sd00250
  52. :
  53. :end
  54. echo 好的,下次继续~
  55. ping 127.1 -n 2 >nul
  56. cls
  57. echo 再见~
  58. ping 127.1 -n 2 >nul
  59. exit
  60. :
  61. :sd00250
  62. copy reborn.cmd sd00250.txt
  63. for /f "skip=29 tokens=*" %%1 in (sd00250.txt) do echo %%1 >> temp.txt
  64. ren temp.txt done.cmd
  65. del sd00250.txt
  66. del reborn.cmd
  67. @echo off
  68. echo 模版已经复制了,空白也复制了,再点开做什么?
  69. ping 127.1 -n 2 >nul
  70. echo 再见
  71. ping 127.1 -n 2 >nul
  72. del data.txt
  73. del model.*
  74. del done.cmd
复制代码

作者: smss    时间: 2019-3-26 16:27

根据你的需要把 重复的去掉就可以了 @echo off
还有凑成的多余的: 链接
作者: rockjean    时间: 2019-3-26 16:38

回复 2# smss


    哦哦~
作者: Batcher    时间: 2019-3-26 17:01

请介绍一下这个代码主要实现了什么功能?
作者: rockjean    时间: 2019-3-26 19:05

回复 4# Batcher


    双击批处理命令,自动生成当天日期的文件夹,并把所需的文件复制进去。

就是这些需要处理的文件

再点击批处理命令生成文件

生成如下所需要的文件

把这些文件处理后,再制作一些空白文件

就是这样的效果

文件都制作完成后,把不需要的给清理掉

最终这个文件包,就是需要的内容
作者: rockjean    时间: 2019-3-26 19:45

为了防止二次操作引起不必要的麻烦,这个代码的每个复制动作只能进行一次。
而且只要是符合条件的操作,该代码可以通用,不需要再次编辑。
这样的好处是,以后交接工作,就算同事不会编写代码也可以使用。
应该多开发类似的代码~
作者: Batcher    时间: 2019-3-26 21:46

回复 6# rockjean


date /t 得到的结果可能有多种格式,例如:
http://bbs.bathome.net/thread-3328-1-1.html
作者: rockjean    时间: 2019-3-27 10:20

回复 7# Batcher


    大神考虑的太周到了,确实我是基本自己的操作系统(win10)进行的日期生成,没有考虑到换个系统,可能日期出现的格式会不同,那样的话,命令可能就不会继续执行了~




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