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

[其他] 批处理命令for /l 报错

[复制链接]
发表于 2019-8-12 11:20:00 | 显示全部楼层 |阅读模式
请问一下问为什么for /l 会报错此时不应该有(1

for %%a in (T*) do "set /a n+=1"

for /l %%a (1,1,%n%) do call set "t=%%t%%+T%%~a"

copy /b "%t:~1%" new
发表于 2019-8-12 13:00:45 | 显示全部楼层
for %%a in (T*) do "set /a n+=1"

for /l %%a in (1,1,%n%) do call set "t=%%t%%+T%%~a"

copy /b "%t:~1%" new
语法错了,没有in
发表于 2019-8-12 13:06:33 | 显示全部楼层
你的思路:
  1. @echo off
  2. set "n=0"
  3. set "t="
  4. for %%a in (T*) do set /a n+=1
  5. for /l %%a in (1,1,%n%) do call set "t=%%t%%+T%%a"
  6. copy /b "%t:~1%" new
复制代码
发表于 2019-8-12 13:06:50 | 显示全部楼层
简化之后的思路:
  1. @echo off
  2. set "t="
  3. for %%a in (T*) do (
  4.     call set "t=%%t%%+%%a"
  5. )
  6. copy /b "%t:~1%" new
复制代码
 楼主| 发表于 2019-8-12 14:05:40 | 显示全部楼层
回复 2# lihui612ld


    额...大意了
 楼主| 发表于 2019-8-12 14:07:04 | 显示全部楼层
回复 4# Batcher


    嗯嗯 ,不过copy /b "%t:~1%" new 不能加""不然会提示系统找不到文件
发表于 2019-8-12 14:32:59 | 显示全部楼层
回复 4# Batcher

这样就不能保证按T后面的数字升序合并了
 楼主| 发表于 2019-8-12 16:07:21 | 显示全部楼层
回复 4# Batcher

用了您的方法加进去了可是最后的if判断为什么判断不出来呢没错呀还有就是好像并没有按照顺序合并=-=
  1. set "a_t=0"
  2. pushd %tmp%\~keyboard
  3. :add_file
  4. rd/s/q t1.17 2>nul
  5. for /l %%a in (1 1 3) do (
  6.     for /f "delims=:" %%b in ('type "%~f0"^|findstr /n "^:begin_%%a$"') do (
  7.         for /f "delims=:" %%c in ('type "%~f0"^|findstr /n "^:end_%%a$"') do call :loop %%a %%b %%c
  8.     )
  9.    
  10. )
  11. pause&exit
  12. :loop
  13. echo;%1[%2 %3]
  14. (for /f "tokens=1* delims=:" %%d in ('type "%~f0"^|findstr /n .*') do (
  15.     if %%d gtr %2 (if %%d lss %3 (echo;%%e))
  16. ))>t.t
  17. md t1.17 >nul
  18. pushd t1.17
  19. type %tmp%\~keyboard\t.t|debug>nul
  20. popd
  21. set "t=0"
  22. for %%a in (t1.17\T*) do (call set "t=%%t%%+%%a")
  23. copy/b t1.17\%t:~1% new
  24. set /a "a_t+=1"
  25. echo %a_t%
  26. if "a_t"=="1" (ren new 1.exe)
  27. if "a_t"=="2" (ren new 2.exe)
  28. if "a_t"=="3" (ren new 3.bmp)
  29. rd/s/q t1.17
  30. exit/b



  31. :begin_1
  32. data
  33. :end_1
  34. :begin_2
  35. data
  36. :end_2
  37. :begin_3
  38. data
  39. :end_3
复制代码
 楼主| 发表于 2019-8-12 16:26:36 | 显示全部楼层
回复 7# zaqmlp


    脑壳要炸了
发表于 2019-8-12 16:40:17 | 显示全部楼层
回复 8# 小渣飞


    3楼的代码也不行是吗?4楼的代码不知道你需要“按照顺序合并”
 楼主| 发表于 2019-8-12 17:11:06 | 显示全部楼层
回复 10# Batcher


    试过了也不行=-=-=-=-=--=-=-=
发表于 2019-8-12 19:24:28 | 显示全部楼层
回复 4# Batcher

call set "t=%%t%%+%%a"

这里的call可以省略吗?
发表于 2019-8-12 20:38:46 | 显示全部楼层
回复 12# netdzb


    不可以
发表于 2019-8-12 20:53:00 | 显示全部楼层
回复 11# 小渣飞


    测试3楼代码时使用的完整代码、测试数据、测试结果、期望结果,打包压缩传上来我试试。
 楼主| 发表于 2019-8-13 10:01:19 | 显示全部楼层
回复 14# Batcher

解决了,原来是我大意了把开头的cd /d "%~dp0"给去掉了结果造成了findstr找不到标签导致type无法写出数据给debug......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 07:00 , Processed in 0.021648 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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