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

[文本处理] [已解决]批处理中%n%与%%n%%的区别是什么?

  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do set /a n+=1&call,set "_%%n%%=%%i"
  3. for /f "delims=" %%i in (2.txt) do set /a m+=1&call,set ".%%m%%=%%i"
  4. if %n% gtr %m% (set "num=%n%") else (set "num=%m%")
  5. for /l %%i in (1,1,%num%) do (
  6.      if defined _%%i call,echo %%_%%i%%
  7.      if defined .%%i call,echo %%.%%i%%
  8. )
  9. pause>nul
复制代码
这个程序中,多次使用%%n%%这种形式,而不是%n%,为什么?

call,set "_%%n%%=%%i"
意思是延迟一小段时间,先等n取行数,然后,在设置_n=%%i,不然无法正确赋值
努力学习,努力挣分

TOP

回复 2楼 的帖子

是不是因为call 原因,扩展延迟变量?

TOP

%n%与%%n%%——增加一对百分号防止在CALL时百分号被剥落!~实际上没什么区别,只是后者在特殊情况下用而已。——呵呵,我还不熟悉“CALL,set”这种形式,但估计差不多。
记得某大说CALL可以脱掉外层百分号……传说中

TOP

返回列表