无需深究原因,我需要一个批处理文件来从 INI 文件中提取一组节名称。幸运的是,我想要的所有部分名称都以相同的字符串开头,所以小菜一碟,对吧?问题是节名称可能包含“%20”。例如,这个 INI 文件:
[Testing\Test%20x]
A=aaa
B=bbb
不幸的是,findstr 将 %20 替换为 0。这是我为批处理文件提出的内容:
@ECHO off
SETLOCAL
FOR /F "delims=" %%A IN ('findstr \[Testing* Test.ini') DO (CALL :DOIT %%A)
ENDLOCAL
GOTO :EXIT
:DOIT
SET First=%1
SET Second=%First:[=%
SET Third=%Second:]=%
SET Fourth=%Third:0=20%
SET Fifth=%Fourth:20=%%20%
ECHO %1 %First% %Second% %Third% %Fourth% %Fifth%
EXIT /B
:EXIT
产生输出:
[Testing\Test0x] [Testing\Test0x] Testing\Test0x] Testing\Test0x Testing\Test20x Testing\Testx0
用反斜杠或插入符号转义百分比是行不通的。如何将百分号放入字符串中?
我使用一个名为
q77476155.txt
包含您的数据的文件进行测试。它并不是
findstr
在进行替换,而是%2
出现在被替换的子例程的参数中。现在 - 你想用字符串做什么?