Board logo

标题: [其他] 请帮我解析获取特殊按键的批处理命令 [打印本页]

作者: hnsdssp    时间: 2022-10-28 21:53     标题: 请帮我解析获取特殊按键的批处理命令

  1. @echo off
  2. SETLOCAL EnableDelayedExpansion
  3. for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  4.   set "DEL=%%a"
  5. )
复制代码
1、按照有关教材的说法,单反引号表示引号内的字符串是一个命令,但里面又有个双引号。双引号表示里面的内容是字符串。那么,怎么解析这个'"prompt #$H#$E# & echo on & for %%b in (1) do rem"'呢?单反引号起什么作用?双引号起什么作用?
2、echo on & for %%b in (1) do rem中的这个%%b和前面的%%a是否有关系?这个(1)在这里指什么?难道就是只是为了把1赋值给%%b吗?
3、prompt #$H#$E# & echo on & for %%b in (1) do rem执行后的结果是什么?
3、for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"执行的详细过程是什么?
请哪位朋友帮帮我,为这个问题我郁闷几天了。
作者: Batcher    时间: 2022-10-30 10:49

回复 1# hnsdssp


关于问题1:
反单引号通常是指`
也就是波浪符号同一个按键的那个字符,在这个脚本中并未用到。
脚本里面出现的'就是一个普通的单引号,不是单反引号

for命令执行一个普通的命令:
  1. @echo off
  2. for /f "delims=" %%a in ('echo Hello') do (
  3.     echo,%%a
  4. )
  5. pause
复制代码
for命令执行一个包含特殊字符的命令之方法1:
  1. @echo off
  2. for /f "delims=" %%a in ('"echo Hello & echo World"') do (
  3.     echo,%%a
  4. )
  5. pause
复制代码
for命令执行一个包含特殊字符的命令之方法2:
  1. @echo off
  2. for /f "delims=" %%a in ('echo Hello1 ^& echo World') do (
  3.     echo,%%a
  4. )
  5. pause
复制代码

作者: hnsdssp    时间: 2022-10-31 20:04

谢谢,理解了。




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