Board logo

标题: [特效代码] 请教一下该批处理第一行和第三行是什么意思 [打印本页]

作者: 咒夜坠    时间: 2012-6-18 10:14     标题: 请教一下该批处理第一行和第三行是什么意思

  1. :?^~!#$%^&*()='"><|/@\
  2. @echo off
  3. set/p str=<%~fs0
  4. setlocal enabledelayedexpansion
  5. for /l %%a in (1 1 10) do (
  6.      for /l %%i in (1 1 30) do (
  7.           set/a n=!random!%%22
  8.           call :lp
  9.      )
  10.      echo !var!&set "var="
  11. )
  12. pause>nul&exit/b
  13. :lp
  14. set "var=!var!!str:~%n%,1!"
复制代码

作者: forfiles    时间: 2012-6-18 10:20

在bat文件本身的首行放置一个字符串:
?^~!#$%^&*()='"><|/@\

然后把这个字符串的内容赋值给变量str
作者: 咒夜坠    时间: 2012-6-18 10:24

在bat文件本身的首行放置一个字符串:
?^~!#$%^&*()='">
forfiles 发表于 2012-6-18 10:20



    放置字符串?应该怎么理解???
作者: forfiles    时间: 2012-6-18 10:40

回复 3# 咒夜坠


    :是个特殊字符,bat在解释执行的时候不会运行它后面的内容。
作者: cb02356828    时间: 2012-6-18 12:49

本帖最后由 cb02356828 于 2012-6-18 12:51 编辑

: 是标签,将各种符号放在第一句标签里是防止被转义吧
< 给变量从文件(%~fs0表示批处理文件本身,用的是短文件名)赋值时只取文件第一行
作者: cutebe    时间: 2012-6-18 12:56

:(冒号)加后面的字符组成标签,就像代码中有一行 P 也是一个标签
第一行这个标签比较特殊,后面是一些特殊字符,整个批处理也没有调用到这个标签。

而第三行作用是将文件(%~fs0)的第一个非空行读取到变量 STR 中。因 %~fs0指的是批处理自身,所以就把第一行内容 “:?^~!#$%^&*()='"><|/@\” 整个赋值给了 STR 变量了。
作者: missll    时间: 2012-6-18 13:21

回复 7# cutebe


    %0 和 %~fs0 其别是什么呢 ? %0不也是自身吗?
作者: cutebe    时间: 2012-6-18 13:32

%~fs0 是完整路径的短文件名
%0 是文件名或完整路径名

为了防止因目录改变(CD 新目录)而无法调用自身,使用 %~fs0 显然更不容易出错。
作者: 咒夜坠    时间: 2012-7-30 16:58

回复 9# cutebe


    那这样说如果我要引用第二行或第三行应该如何累加呢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2