找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17447|回复: 1

[其他] [分享]批处理把几段重复的代码改成for循环

[复制链接]
发表于 2022-5-24 10:38:13 | 显示全部楼层 |阅读模式
【问题描述】


这能搞循环么?
  1. %Dism-10-X64% /Image:%Mount% /Set-Edition:CoreSingleLanguage
  2. %Dism-10-X64% /Commit-Image /MountDir:%Mount%
  3. %Wimlib-imagex-x64% info %Wimfile1%-bak.wim 1 "%Desc1% Home SL" "%Desc-EN-US%" --image-property DISPLAYNAME="%Desc1% Home SL" --image-property DISPLAYDESCRIPTION="%Desc-EN-US%" --image-property FLAGS="CoreSingleLanguage"
  4. %Dism-10-X64% /Export-Image /SourceImageFile:%Wimfile1%-bak.wim /SourceIndex:1 /DestinationImageFile:%Wimfile1%.wim

  5. %Dism-10-X64% /Image:%Mount% /Set-Edition:CloudEdition
  6. %Dism-10-X64% /Commit-Image /MountDir:%Mount%
  7. %Wimlib-imagex-x64% info %Wimfile1%-bak.wim 1 "%Desc1% CloudEdition" "%Desc-EN-US%" --image-property DISPLAYNAME="%Desc1% CloudEdition" --image-property DISPLAYDESCRIPTION="%Desc-EN-US%" --image-property FLAGS="CloudEdition"
  8. %Dism-10-X64% /Export-Image /SourceImageFile:%Wimfile1%-bak.wim /SourceIndex:1 /DestinationImageFile:%Wimfile1%.wim

  9. %Dism-10-X64% /Image:%Mount% /Set-Edition:Professional
  10. %Dism-10-X64% /Commit-Image /MountDir:%Mount%
  11. %Wimlib-imagex-x64% info %Wimfile1%-bak.wim 1 "%Desc1% Pro" "%Desc-EN-US%" --image-property DISPLAYNAME="%Desc1% Pro" --image-property DISPLAYDESCRIPTION="%Desc-EN-US%" --image-property FLAGS="Professional"
  12. %Dism-10-X64% /Export-Image /SourceImageFile:%Wimfile1%-bak.wim /SourceIndex:1 /DestinationImageFile:%Wimfile1%.wim

  13. %Dism-10-X64% /Image:%Mount% /Set-Edition:ProfessionalEducation
  14. %Dism-10-X64% /Commit-Image /MountDir:%Mount%
  15. %Wimlib-imagex-x64% info %Wimfile1%-bak.wim 1 "%Desc1% Pro Edu" "%Desc-EN-US%" --image-property DISPLAYNAME="%Desc1% Pro Edu" --image-property DISPLAYDESCRIPTION="%Desc-EN-US%" --image-property FLAGS="ProfessionalEducation"
  16. %Dism-10-X64% /Export-Image /SourceImageFile:%Wimfile1%-bak.wim /SourceIndex:1 /DestinationImageFile:%Wimfile1%.wim

  17. %Dism-10-X64% /Image:%Mount% /Set-Edition:ProfessionalSingleLanguage
  18. %Dism-10-X64% /Commit-Image /MountDir:%Mount%
  19. %Wimlib-imagex-x64% info %Wimfile1%-bak.wim 1 "%Desc1% Pro SL" "%Desc-EN-US%" --image-property DISPLAYNAME="%Desc1% Pro SL" --image-property DISPLAYDESCRIPTION="%Desc-EN-US%" --image-property FLAGS="ProfessionalSingleLanguage"
  20. %Dism-10-X64% /Export-Image /SourceImageFile:%Wimfile1%-bak.wim /SourceIndex:1 /DestinationImageFile:%Wimfile1%.wim
复制代码
 楼主| 发表于 2022-5-24 10:38:52 | 显示全部楼层
【解决方案】
  1. for /f "delims=:" %%i in ('findstr /n "^:DynamicScript$" "%~f0"') do (
  2.     for /f "tokens=1-2 delims=:" %%j in ('more +%%i "%~f0"') do (
  3.         %Dism-10-X64% /Image:%Mount% /Set-Edition:%%j
  4.         %Dism-10-X64% /Commit-Image /MountDir:%Mount%
  5.         %Wimlib-imagex-x64% info %Wimfile1%-bak.wim 1 "%%k" "%Desc-EN-US%" --image-property DISPLAYNAME="%%k" --image-property DISPLAYDESCRIPTION="%Desc-EN-US%" --image-property FLAGS="CoreSingleLanguage"
  6.         %Dism-10-X64% /Export-Image /SourceImageFile:%Wimfile1%-bak.wim /SourceIndex:1 /DestinationImageFile:%Wimfile1%.wim

  7.     )
  8. )

  9. goto :eof

  10. REM 这段放在脚本的最下面
  11. :DynamicScript
  12. CoreSingleLanguage:%Desc1% Home SL
  13. CloudEdition:%Desc1% CloudEdition
  14. Professional:%Desc1% Pro
  15. ProfessionalEducation:%Desc1% Pro Edu
  16. ProfessionalSingleLanguage:%Desc1% Pro SL
复制代码
思路概括:
不变的部分,放在for循环里面。
变化的部分,提取出来放在一个配置文件里面,或者放在BAT自身的结尾。

类似用法:
https://mp.weixin.qq.com/s/McvY4CiR-SYGaCha7lmjIw
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 23:18 , Processed in 0.016899 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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