批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文本处理] 这段BAT代码的工作原理是什么

代码:

  1. :test1
  2. setlocal EnableDelayedExpansion
  3. set "filename=temp1.txt"
  4. set "str1=" & <"%filename%" set /p "str1="
  5. echo output 1
  6. set str1
  7. echo !str1!
  8. echo %str1%
  9. echo output 2
  10. set "str2=%str1%"
  11. set str2
  12. echo !str2!
  13. echo %str2%
  14. endlocal
  15. goto :eof
复制代码


temp1.txt内容:
  1. abc   %%var1%%   ^!^!var2^!^!   mmm   !var3!
复制代码


代码输出:

  1. output 1
  2. str1=   abc   %%var1%%   ^!^!var2^!^!   mmm   !var3!
  3.    abc   %%var1%%   ^!^!var2^!^!   mmm   !var3!
  4.    abc   %%var1%%   var3
  5. output 2
  6. str2=   abc   %%var1%%   !!var2!!   mmm
  7.    abc   %%var1%%   !!var2!!   mmm
  8.    abc   %%var1%%      mmm
复制代码


谁能完整讲解一下这段代码是如何工作的,为什么有这样的输出?

谢谢!

原理和call传递类似进行实体数据传递,

这种代码最不好的地方就是临时文件过多
优点是实时生效,适合N个批处理同时做不同的处理传递数据
下列代码属于调用类获取示例:
@echo off
call:0 abc   %%var1%%   !!var2!!   mmm   !var3!
pause
goto:eof
:0
call:1 %*
rem:下列这种不严谨超过9个参数会出错建议获取整体分列变量重置调用
call:1 %9 %8 %7 %6 %5 %4 %3 %2 %1
goto:eof
:1
echo,%1 %2 %3 %4 %5 %6 %7 %8 %9
shift
if /i "%1"=="" goto:eof
goto:1
这么好的论坛你上哪找
注:请遵守互联网信息安全,勿用于非法用途,伸手党直接去某度

TOP

代码输出第四行为什么会有这样的输出

TOP

返回列表