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

[特效代码] 请教一下该批处理第一行和第三行是什么意思

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

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

然后把这个字符串的内容赋值给变量str

TOP

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



    放置字符串?应该怎么理解???

TOP

回复 3# 咒夜坠


    :是个特殊字符,bat在解释执行的时候不会运行它后面的内容。

TOP

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

: 是标签,将各种符号放在第一句标签里是防止被转义吧
< 给变量从文件(%~fs0表示批处理文件本身,用的是短文件名)赋值时只取文件第一行
兴趣是最好的老师。

TOP

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

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

TOP

回复 7# cutebe


    %0 和 %~fs0 其别是什么呢 ? %0不也是自身吗?
花开不问月,不语笑红尘.

TOP

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

为了防止因目录改变(CD 新目录)而无法调用自身,使用 %~fs0 显然更不容易出错。

TOP

回复 9# cutebe


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

TOP

返回列表