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

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

请问一下问为什么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

回复 14# Batcher

解决了,原来是我大意了把开头的cd /d "%~dp0"给去掉了结果造成了findstr找不到标签导致type无法写出数据给debug......

TOP

回复 11# 小渣飞


    测试3楼代码时使用的完整代码、测试数据、测试结果、期望结果,打包压缩传上来我试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# netdzb


    不可以
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher

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

这里的call可以省略吗?

TOP

回复 10# Batcher


    试过了也不行=-=-=-=-=--=-=-=

TOP

回复 8# 小渣飞


    3楼的代码也不行是吗?4楼的代码不知道你需要“按照顺序合并”
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# zaqmlp


    脑壳要炸了

TOP

回复 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
复制代码

TOP

回复 4# Batcher

这样就不能保证按T后面的数字升序合并了
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 4# Batcher


    嗯嗯 ,不过copy /b "%t:~1%" new 不能加""不然会提示系统找不到文件

TOP

回复 2# lihui612ld


    额...大意了

TOP

简化之后的思路:
  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

你的思路:
  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

返回列表