- 帖子
- 95
- 积分
- 220
- 技术
- 0
- 捐助
- 100
- 注册时间
- 2024-2-20
|
11楼
发表于 2024-3-18 17:13
| 只看该作者
本帖最后由 GNGW 于 2024-3-21 09:23 编辑
回复 GNGW
赋值:
set "s=1+2"
把1+2这个字符串赋值给变量s
运算:
set /a "t=1+2"
计算1+2的 ...
ShowCode 发表于 2024-3-18 15:57
经过启发动手实验发现,[img][/img],也就是说,现在为止操作系统中,只要不使用set /a 都不认为是计算。都是直接赋值字符串,有趣的是,当set “s=(1+2)&echo %s%”时,当(1+2)中间没有空格时并不会改变当前环境变量s的值,也就是说,只有set “s=(1 + 2)&echo %s%” +号两边有空格时,才会将整个(1 + 2)作为字符串赋值给环境变量s.这个问题的解释就是不加空格解释器会认为后面的是个算数运算式,(这个问题结论是错误的,16楼有纠正,在此贴出直链 http://www.bathome.net/redirect. ... 8649&pid=279361)但没有/a选项,所以解释器认为这是个错误的算式,所以忽略不复制给左边变量,然后根据这个问题引发的问题,我得出个答案,在解释器机制中,有两种转义机制,一种在适用^(脱字符),另一种转义方式,是在不开启命令扩展的情况下,setlocal enableextensions,使用与特殊字符相同的字符进行转义,(转义:将特殊字符转义为普通字符使用,也就是不启用该字符在语法中的特殊效果),列举一些常见的双字符的转义(不开命令扩展下):
(第一部分)
除了之前提到的 `%%`、`^^` 和 `""` 之外,以下是批处理中一些其他常见的两个字符组合,它们被解释为一个普通字符而不触发特殊效果:
1. `&&`:
- 在批处理中,`&` 用于将多个命令连接在一起,依次执行。
- 当两个 `&` 字符连续出现时,它们被解释为一个单独的 `&` 字符,不触发命令连接的效果。
- 例如,`echo &&` 将输出 `&`。
2. `||`:
- 在批处理中,`|` 用于将一个命令的输出作为另一个命令的输入,称为管道。
- 当两个 `|` 字符连续出现时,它们被解释为一个单独的 `|` 字符,不触发管道的效果。
- 例如,`echo ||` 将输出 `|`。
3. `<<` 和 `>>`:
- 在批处理中,`<` 用于重定向输入,`>` 用于重定向输出。
- 当两个 `<` 或 `>` 字符连续出现时,它们被解释为相应的重定向符号,而不是将它们视为普通字符。
- 例如,`echo <<` 将输出 `<`,`echo >>` 将输出 `>`。
4. `((`、`))` 和 `[:`、`:]`:
- 在批处理中,这些符号通常用于条件表达式或算术表达式。
- 当它们成对出现时,它们通常被解释为特定的语法结构,而不是普通字符。
- 例如,`echo ((` 将输出 `(`,`echo ))` 将输出 `)`。
(第二部分)
除了之前提到的字符组合外,批处理中还有一些其他的字符组合可能具有特殊含义或被解释为普通字符,具体取决于上下文和命令。以下是一些补充:
1. `,,`:
- 在批处理中,`,` 通常用作分隔符,例如在 `for` 循环中分隔多个参数。
- 当两个 `,` 字符连续出现时,它们通常被解释为一个单独的 `,` 字符。
- 例如,`echo ,,` 将输出 `,`。
2. `;;`:
- 在批处理中,`;` 用于分隔多个命令,使它们依次执行。
- 当两个 `;` 字符连续出现时,它们通常被解释为一个单独的 `;` 字符。
- 例如,`echo ;;` 将输出 `;`。
3. `??`:
- 在批处理中,`?` 通常用作通配符,匹配单个字符。
- 当两个 `?` 字符连续出现时,它们通常被解释为两个单独的 `?` 字符,而不是特殊的通配符。
- 例如,`echo ??` 将输出 `??`。
4. `**`:
- 在批处理中,`*` 通常用作通配符,匹配零个或多个字符。
- 当两个 `*` 字符连续出现时,它们通常被解释为两个单独的 `*` 字符,而不是特殊的通配符。
- 例如,`echo **` 将输出 `**`。
5. `//`:
- 在批处理中,`/` 通常用作命令或参数的分隔符。
- 当两个 `/` 字符连续出现时,它们通常被解释为两个单独的 `/` 字符。
- 例如,`echo //` 将输出 `//`。
请注意,这些字符组合的具体行为可能会因上下文和命令而有所不同。在某些情况下,它们可能具有特殊的含义或触发特定的操作。
(第三部分)
除了之前提到的字符组合外,批处理中还有一些其他的字符组合可能具有特殊含义或被解释为普通字符,具体取决于上下文和命令。以下是一些补充:
1. `++`:
- 在批处理中,`+` 通常用于字符串连接或算术运算。
- 当两个 `+` 字符连续出现时,它们通常被解释为两个单独的 `+` 字符,而不是特殊的运算符。
- 例如,`echo ++` 将输出 `++`。
2. `--`:
- 在批处理中,`-` 通常用于表示命令的选项或参数。
- 当两个 `-` 字符连续出现时,它们通常被解释为两个单独的 `-` 字符,而不是特殊的选项标记。
- 例如,`echo --` 将输出 `--`。
3. `__`:
- 在批处理中,`_` 通常被视为普通字符,用于变量名或文件名。
- 当两个 `_` 字符连续出现时,它们通常被解释为两个单独的 `_` 字符。
- 例如,`echo __` 将输出 `__`。
4. `::::`:
- 在批处理中,`:` 通常用于标签或驱动器号。
- 当多个 `:` 字符连续出现时,它们通常被解释为多个单独的 `:` 字符,而不是特殊的标签或驱动器号。
- 例如,`echo ::::` 将输出 `::::`。
5. `####`:
- 在批处理中,`#` 通常用于注释或特殊字符。
- 当多个 `#` 字符连续出现时,它们通常被解释为多个单独的 `#` 字符,而不是特殊的注释或字符。
- 例如,`echo ####` 将输出 `####`。
请注意,这些字符组合的具体行为可能会因上下文和命令而有所不同。在某些情况下,它们可能具有特殊的含义或触发特定的操作。 |
|