[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】多个BAT代码合并,指定关键字执行具体代码

本帖最后由 qd2024 于 2024-1-10 22:34 编辑

链接:https://pan.baidu.com/s/10Vn3c47vlF-MApoilXyOsQ?pwd=al1f
提取码:al1f
--来自百度网盘超级会员V10的分享


我有若干个BAt文件,
小册子P16.bat  小册子P32.bat  小册子P36.bat  小册子P48.bat  小册子P56.bat 小册子P64.bat  小册子P72.bat
怎样把它们和并到一个bat里面,
我想给是不是可以给每段代码指定个名字,如 小册子P16.bat 就叫 16   小册子P32.bat 就叫 32
当我运行这个合并后的BAT里,让我输入文字
我输入16回车 就执行小册子P16.bat
我输入32回车 就执行小册子P32.bat

名称的关键字就用数字吧,这样方便。

批处理执行后,删除自己。

辛苦了 谢谢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 1# qd2024


Run-V1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. :GetInput
  4. echo [16] 小册子P16.bat
  5. echo [32] 小册子P32.bat
  6. echo [36] 小册子P36.bat
  7. echo [48] 小册子P48.bat
  8. echo [56] 小册子P56.bat
  9. echo [64] 小册子P64.bat
  10. echo [72] 小册子P72.bat
  11. set "MyInput="
  12. set /p "MyInput=请输入选项:"
  13. if "%MyInput%" == "16" (
  14.     call 小册子P16.bat
  15. ) else if "%MyInput%" == "32" (
  16.     call 小册子P32.bat
  17. ) else if "%MyInput%" == "36" (
  18.     call 小册子P36.bat
  19. ) else if "%MyInput%" == "48" (
  20.     call 小册子P48.bat
  21. ) else if "%MyInput%" == "56" (
  22.     call 小册子P56.bat
  23. ) else if "%MyInput%" == "64" (
  24.     call 小册子P64.bat
  25. ) else if "%MyInput%" == "72" (
  26.     call 小册子P72.bat
  27. ) else (
  28.     goto :GetInput
  29. )
  30. pause
复制代码
测试代码之前请做好备份

TOP

本帖最后由 aloha20200628 于 2024-1-10 11:09 编辑


假设要执行的批处理脚本 *.bat 均在目录 d:\bat
测试代码如下存为 test.cmd
  1. @echo off &setlocal enabledelayedexpansion
  2. set "batDir=d:\bat" &cd /d "!batDir!" || exit/b
  3. for /f "delims=" %%B in ('dir /b/a-d *.bat') do (set/a "n+=1" &set "_!n!=%%~nxB" &echo,[!n!] %%~nxB)
  4. set "batF=" &set/p "batF=选择批处理脚本序号:"
  5. if not defined batF exit/b
  6. for %%b in (!batF!) do (call "!_%%b!")
  7. endlocal &exit/b
复制代码

TOP

本帖最后由 qixiaobin0715 于 2024-1-10 10:44 编辑

感觉楼主没想明白,又是运行又是执行又是删除,不觉得麻烦吗?
如果同样页数对应关系相同的话,可以把所有用到的不同总页码的对应关系保存到一个文本中,使用批处理文件调用即可。

TOP

本帖最后由 qd2024 于 2024-1-10 12:44 编辑

回复 2# ShowCode
回复 3# aloha20200628

辛苦了,谢谢

我是想把小册子P16.bat  小册子P32.bat  小册子P36.bat  小册子P48.bat  小册子P56.bat 小册子P64.bat  小册子P72.bat  里面的代码都复制到一个文件里,

然后运行这个bat ,输入关键字回车运行,或则列出菜单我选择也行。

帮我再调整一下 谢谢。
  1. @echo off&color f1&title 改文件名
  2. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  3. if exist "%%i.*" ren "%%i.*" "%%j.*")
  4. echo.改名结束&ping 127.1>nul&exit -
  5. 小册子_1 08
  6. 小册子_2 09
  7. 小册子_3 10
  8. 小册子_4 07
  9. 小册子_5 06
  10. 小册子_6 11
  11. 小册子_7 12
  12. 小册子_8 05
  13. 小册子_9 04
  14. 小册子_10 13
  15. 小册子_11 14
  16. 小册子_12 03
  17. 小册子_13 02
  18. 小册子_14 15
  19. 小册子_15 16
  20. 小册子_16 01
  21. @echo off&color f1&title 改文件名
  22. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  23. if exist "%%i.*" ren "%%i.*" "%%j.*")
  24. echo.改名结束&ping 127.1>nul&exit -
  25. 小册子_1 16
  26. 小册子_2 17
  27. 小册子_3 18
  28. 小册子_4 15
  29. 小册子_5 14
  30. 小册子_6 19
  31. 小册子_7 20
  32. 小册子_8 13
  33. 小册子_9 12
  34. 小册子_10 21
  35. 小册子_11 22
  36. 小册子_12 11
  37. 小册子_13 10
  38. 小册子_14 23
  39. 小册子_15 24
  40. 小册子_16 9
  41. 小册子_17 8
  42. 小册子_18 25
  43. 小册子_19 26
  44. 小册子_20 7
  45. 小册子_21 6
  46. 小册子_22 27
  47. 小册子_23 28
  48. 小册子_24 5
  49. 小册子_25 4
  50. 小册子_26 29
  51. 小册子_27 30
  52. 小册子_28 3
  53. 小册子_29 2
  54. 小册子_30 31
  55. 小册子_31 32
  56. 小册子_32 1
  57. @echo off&color f1&title 改文件名
  58. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  59. if exist "%%i.*" ren "%%i.*" "%%j.*")
  60. echo.改名结束&ping 127.1>nul&exit -
  61. 小册子1 16
  62. 小册子2 17
  63. 小册子3 18
  64. 小册子4 15
  65. 小册子5 14
  66. 小册子6 19
  67. 小册子7 20
  68. 小册子8 13
  69. 小册子9 12
  70. 小册子10 21
  71. 小册子11 22
  72. 小册子12 11
  73. 小册子13 10
  74. 小册子14 23
  75. 小册子15 24
  76. 小册子16 9
  77. 小册子17 8
  78. 小册子18 25
  79. 小册子19 26
  80. 小册子20 7
  81. 小册子21 6
  82. 小册子22 27
  83. 小册子23 28
  84. 小册子24 5
  85. 小册子25 4
  86. 小册子26 29
  87. 小册子27 30
  88. 小册子28 3
  89. 小册子29 2
  90. 小册子30 31
  91. 小册子31 32
  92. 小册子32 1
  93. 小册子33 0
  94. 小册子34 35
  95. 小册子35 36
  96. 小册子36 0
  97. @echo off&color f1&title 改文件名
  98. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  99. if exist "%%i.*" ren "%%i.*" "%%j.*")
  100. echo.改名结束&ping 127.1>nul&exit -
  101. 小册子_1 24
  102. 小册子_2 25
  103. 小册子_3 26
  104. 小册子_4 23
  105. 小册子_5 22
  106. 小册子_6 27
  107. 小册子_7 28
  108. 小册子_8 21
  109. 小册子_9 20
  110. 小册子_10 29
  111. 小册子_11 30
  112. 小册子_12 19
  113. 小册子_13 18
  114. 小册子_14 31
  115. 小册子_15 32
  116. 小册子_16 17
  117. 小册子_17 16
  118. 小册子_18 33
  119. 小册子_19 34
  120. 小册子_20 15
  121. 小册子_21 14
  122. 小册子_22 35
  123. 小册子_23 36
  124. 小册子_24 13
  125. 小册子_25 12
  126. 小册子_26 37
  127. 小册子_27 38
  128. 小册子_28 11
  129. 小册子_29 10
  130. 小册子_30 39
  131. 小册子_31 40
  132. 小册子_32 9
  133. 小册子_33 8
  134. 小册子_34 41
  135. 小册子_35 42
  136. 小册子_36 7
  137. 小册子_37 6
  138. 小册子_38 43
  139. 小册子_39 44
  140. 小册子_40 5
  141. 小册子_41 4
  142. 小册子_42 45
  143. 小册子_43 46
  144. 小册子_44 3
  145. 小册子_45 2
  146. 小册子_46 47
  147. 小册子_47 48
  148. 小册子_48 1
  149. @echo off&color f1&title 改文件名
  150. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  151. if exist "%%i.*" ren "%%i.*" "%%j.*")
  152. echo.改名结束&ping 127.1>nul&exit -
  153. 小册子_1 28
  154. 小册子_2 29
  155. 小册子_3 30
  156. 小册子_4 27
  157. 小册子_5 26
  158. 小册子_6 31
  159. 小册子_7 32
  160. 小册子_8 25
  161. 小册子_9 24
  162. 小册子_10 33
  163. 小册子_11 34
  164. 小册子_12 23
  165. 小册子_13 22
  166. 小册子_14 35
  167. 小册子_15 36
  168. 小册子_16 21
  169. 小册子_17 20
  170. 小册子_18 37
  171. 小册子_19 38
  172. 小册子_20 19
  173. 小册子_21 18
  174. 小册子_22 39
  175. 小册子_23 40
  176. 小册子_24 17
  177. 小册子_25 16
  178. 小册子_26 41
  179. 小册子_27 42
  180. 小册子_28 15
  181. 小册子_29 14
  182. 小册子_30 43
  183. 小册子_31 44
  184. 小册子_32 13
  185. 小册子_33 12
  186. 小册子_34 45
  187. 小册子_35 46
  188. 小册子_36 11
  189. 小册子_37 10
  190. 小册子_38 47
  191. 小册子_39 48
  192. 小册子_40 9
  193. 小册子_41 8
  194. 小册子_42 49
  195. 小册子_43 50
  196. 小册子_44 7
  197. 小册子_45 6
  198. 小册子_46 51
  199. 小册子_47 52
  200. 小册子_48 5
  201. 小册子_49 4
  202. 小册子_50 53
  203. 小册子_51 54
  204. 小册子_52 3
  205. 小册子_53 2
  206. 小册子_54 55
  207. 小册子_55 56
  208. 小册子_56 1
  209. @echo off&color f1&title 改文件名
  210. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  211. if exist "%%i.*" ren "%%i.*" "%%j.*")
  212. echo.改名结束&ping 127.1>nul&exit -
  213. 小册子_1 32
  214. 小册子_2 33
  215. 小册子_3 34
  216. 小册子_4 31
  217. 小册子_5 30
  218. 小册子_6 35
  219. 小册子_7 36
  220. 小册子_8 29
  221. 小册子_9 28
  222. 小册子_10 37
  223. 小册子_11 38
  224. 小册子_12 27
  225. 小册子_13 26
  226. 小册子_14 39
  227. 小册子_15 40
  228. 小册子_16 25
  229. 小册子_17 24
  230. 小册子_18 41
  231. 小册子_19 42
  232. 小册子_20 23
  233. 小册子_21 22
  234. 小册子_22 43
  235. 小册子_23 44
  236. 小册子_24 21
  237. 小册子_25 20
  238. 小册子_26 45
  239. 小册子_27 46
  240. 小册子_28 19
  241. 小册子_29 18
  242. 小册子_30 47
  243. 小册子_31 48
  244. 小册子_32 17
  245. 小册子_33 16
  246. 小册子_34 49
  247. 小册子_35 50
  248. 小册子_36 15
  249. 小册子_37 14
  250. 小册子_38 51
  251. 小册子_39 52
  252. 小册子_40 13
  253. 小册子_41 12
  254. 小册子_42 53
  255. 小册子_43 54
  256. 小册子_44 11
  257. 小册子_45 10
  258. 小册子_46 55
  259. 小册子_47 56
  260. 小册子_48 9
  261. 小册子_49 8
  262. 小册子_50 57
  263. 小册子_51 58
  264. 小册子_52 7
  265. 小册子_53 6
  266. 小册子_54 59
  267. 小册子_55 60
  268. 小册子_56 5
  269. 小册子_57 4
  270. 小册子_58 61
  271. 小册子_59 62
  272. 小册子_60 3
  273. 小册子_61 2
  274. 小册子_62 63
  275. 小册子_63 64
  276. 小册子_64 1
  277. @echo off&color f1&title 改文件名
  278. for /f "tokens=1,2" %%i in ('more +4 "%~0"')do (
  279. if exist "%%i.*" ren "%%i.*" "%%j.*")
  280. echo.改名结束&ping 127.1>nul&exit -
  281. 小册子_1 36
  282. 小册子_2 37
  283. 小册子_3 38
  284. 小册子_4 35
  285. 小册子_5 34
  286. 小册子_6 39
  287. 小册子_7 40
  288. 小册子_8 33
  289. 小册子_9 32
  290. 小册子_10 41
  291. 小册子_11 42
  292. 小册子_12 31
  293. 小册子_13 30
  294. 小册子_14 43
  295. 小册子_15 44
  296. 小册子_16 29
  297. 小册子_17 28
  298. 小册子_18 45
  299. 小册子_19 46
  300. 小册子_20 27
  301. 小册子_21 26
  302. 小册子_22 47
  303. 小册子_23 48
  304. 小册子_24 25
  305. 小册子_25 24
  306. 小册子_26 49
  307. 小册子_27 50
  308. 小册子_28 23
  309. 小册子_29 22
  310. 小册子_30 51
  311. 小册子_31 52
  312. 小册子_32 21
  313. 小册子_33 20
  314. 小册子_34 53
  315. 小册子_35 54
  316. 小册子_36 19
  317. 小册子_37 18
  318. 小册子_38 55
  319. 小册子_39 56
  320. 小册子_40 17
  321. 小册子_41 16
  322. 小册子_42 57
  323. 小册子_43 58
  324. 小册子_44 15
  325. 小册子_45 14
  326. 小册子_46 59
  327. 小册子_47 60
  328. 小册子_48 13
  329. 小册子_49 12
  330. 小册子_50 61
  331. 小册子_51 62
  332. 小册子_52 11
  333. 小册子_53 10
  334. 小册子_54 63
  335. 小册子_55 64
  336. 小册子_56 9
  337. 小册子_57 8
  338. 小册子_58 65
  339. 小册子_59 66
  340. 小册子_60 7
  341. 小册子_61 6
  342. 小册子_62 67
  343. 小册子_63 68
  344. 小册子_64 5
  345. 小册子_65 4
  346. 小册子_66 69
  347. 小册子_67 70
  348. 小册子_68 3
  349. 小册子_69 2
  350. 小册子_70 71
  351. 小册子_71 72
  352. 小册子_72 1
复制代码

TOP

本帖最后由 newswan 于 2024-1-10 16:53 编辑

回复 5# qd2024

定义每个 order,然后根据 文件数量选择某个 order
  1. set order16=08 09 10 07 06 11 12 05 04 13 14 03 02 15 16 01
  2. set order32=
  3. set order =!order%n%!
  4. set/a i=0
  5. for %%a in ( %order% ) do (
  6. set/a i+=1
  7. echo   !i!  %%a
  8. )
复制代码

TOP

先检测如果有  小册子_72  文件,就运行72.bat
再检测如果有  小册子_36  文件,就运行36.bat
......
再检测如果有  小册子_16  文件,就运行16.bat

QQ 20147578

TOP

分析了一个,规律是这样的
  1. 08  09  10  07
  2. 06  11  12  05
  3. 04  13  14  03
  4. 02  15  16  01
复制代码

TOP

回复 6# newswan

我理解这个思路是不是判断当前目录下有多少个文件,然后就执行order对应行的规则, 我如图设置了,应该是不对,没有成功
文件我上传到百度了,帮忙再分析一下。
   

链接:https://pan.baidu.com/s/1Dpuins4sRblfVYn7RMM_zQ?pwd=yuj1
提取码:yuj1
--来自百度网盘超级会员V10的分享

TOP

回复 9# qd2024


    首先,不能把批处理放图片文件夹里,图片文件夹作为参数 发给批处理

TOP

回复 10# newswan


   
     我把图片放文件夹里 也不行 机器死机了

TOP

把文件夹拖到bat上面
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set order16= 08 09 10 07 06 11 12 05 04 13 14 03 02 15 16 01
  4. set f=%1
  5. for /f "delims=" %%i in ('dir /b /s /a-d "%f%" 2^>nul ^| find /c /v ""') do (
  6. set n=%%i
  7. )
  8. set order=!order%n%!
  9. set/a i=0
  10. for %%a in ( %order% ) do (
  11. set/a i+=1
  12. echo ren   测试_!i!.jpg  %%a.jpg
  13. )
  14. pause
复制代码

TOP

  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set order16= 08 09 10 07 06 11 12 05 04 13 14 03 02 15 16 01
  4. set f=%1
  5. for /f "delims=" %%i in ('dir /b /s /a-d "%f%" 2^>nul ^| find /c /v ""') do (
  6. set n=%%i
  7. )
  8. echo,
  9. echo folder:     %f%
  10. echo file count: %n%
  11. echo,
  12. set order=!order%n%!
  13. set/a i=0
  14. for %%a in ( %order% ) do (
  15. set/a i+=1
  16. echo ren   测试_!i!.jpg  %%a.jpg
  17. )
  18. echo,
  19. echo, complete
  20. pause
复制代码

TOP

回复 12# newswan
回复 13# newswan

我把12、13楼的代码分别放在2个BAt里了  有提示窗口  但是没有改变文件名 谢谢
   

TOP

回复 14# qd2024


    如果命令显示正确, echo ren 改成 ren

TOP

返回列表