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

[原创] 批处理命令call echo 用法

如有错误,请大家指正,我拭目以待^&洗耳恭听
  1. @echo off
  2. set ok=adsl
  3. set s=abc
  4. set b=qdj!ok!
  5. setlocal enabledelayedexpansion
  6. call echo %%!s:~1,1!%%
  7. endlocal
  8. pause
复制代码
运行结果是 qdj!ok!
关键在于call echo %%!s:~1,1!%%
预处理是这样的:
1去掉call, 把%%减半,然后替换!s:~1,1!变成 echo %b%
2 替换%b% 变成echo qdj!ok!,虽然这里出现了感叹号,但是cmd不再扩展了,(你知道是怎么回事吗?)
这样就输出 qdj!ok!
  1. @echo off
  2. set ok=adsl
  3. setlocal enabledelayedexpansion
  4. call echo !%%ok%%:~1,1!
  5. endlocal
  6. pause
复制代码
输出 ~1,1
原因是call没有对感叹号里面的%进行减半,这样 %%k%% 就无意义了。
时光荏苒||新陈代谢&&涛声依旧||本性难移

返回列表