【发布时间】:2021-10-10 15:28:40
【问题描述】:
Wikipedia 列出了我试图用百分比编码替换字符串中的几个保留字符。字符是:
| Character | Encoding |
|---|---|
| ! | %21 |
| # | %23 |
| $ | %24 |
| % | %25 |
| & | %26 |
| ' | %27 |
| ( | %28 |
| ) | %29 |
| * | %2A |
| + | %2B |
| , | %2C |
| / | %2F |
| : | %3A |
| ; | %3B |
| = | %3D |
| ? | %3F |
| @ | %40 |
| [ | %5B |
| ] | %5D |
我的批处理脚本正在读取用户的输入,然后输出一个字符串,其中保留字符已被其百分比编码值替换。
问题是某些字符没有被读入,而其他字符在尝试对它们进行百分比编码时不起作用。
我的代码是
@echo off
setlocal EnableDelayedExpansion
set /p pass=Enter pass:
@REM Do % first so it doesn't replace all the new %
set "pass=!pass:%%=%%25!"
@REM Not working - set "pass=!pass:!=%%21!"
set "pass=!pass:#=%%23!"
set "pass=!pass:$=%%24!"
set "pass=!pass:&=%%26!"
set "pass=!pass:'=%%27!"
set "pass=!pass:(=%%28!"
set "pass=!pass:)=%%29!"
@REM Not working set "pass=!pass:*=%%2A!"
set "pass=!pass:+=%%2B!"
set "pass=!pass:,=%%2C!"
set "pass=!pass:/=%%2F!"
set "pass=!pass::=%%3A!"
set "pass=!pass:;=%%3B!"
@REM Not working set "pass=!pass:==%%3D!"
set "pass=!pass:?=%%3F!"
set "pass=!pass:@=%%40!"
set "pass=!pass:[=%%5B!"
set "pass=!pass:]=%%5D!"
echo %pass%
pause
我正在使用Test ! # $ % ' ( ) * + , / : ; = ? @ [ ] 进行测试。
文本中的! 似乎没有读入字符串,我不得不注释掉三个字符转换,因为它们不起作用。
我怎样才能让它读起来!在? 如何转义 3 个注释掉的字符,以便将所有保留字符转换为它们的百分比编码?
【问题讨论】:
-
用
echo(!pass!替换echo %pass%…
标签: batch-file windows-10