gpt4 book ai didi

windows - 如何从 Windows 批处理脚本中的文件中读取带有 "!"的字符串?

转载 作者:可可西里 更新时间:2023-11-01 13:56:14 25 4
gpt4 key购买 nike

我正在编写一个批处理脚本来读取文件。该文件包含诸如 token=value 之类的行。我有代码来解析文件的每一行,它存储在 %%i 中。以下代码尝试提取 token 的值:

请注意,如评论中所述,此脚本正在使用延迟扩展。

   for /f "tokens=1* delims==" %%a in ("%%i") do (  
if "%%a"=="password" ( set password=%%b )
)

如果 token 密码的值包含“!”,则“!”被跳过,只有字符串的其余部分存储在变量密码中。例如,如果该行是:

密码=测试!

然后变量 password=Test 。我尝试以各种方式更改输入文件,批处理脚本读取除“!”以外的所有内容。我用过:

  1. 密码="测试!"

  2. 密码="测试^!"

  3. password=Test%!

    密码=测试%!

一切都会跳过“!”。知道如何用“!”读取字符串吗?变成一个变量?

最佳答案

假设您正在使用延迟变量扩展,只需暂时将其禁用以进行比较。为了在非延迟模式下进行比较,我将通过 ! 解析当前行拆分并检查第一个标记是否与整行相同:

@echo off
setlocal enableDelayedExpansion
for /f "delims=" %%i in (sourcefile.txt) do (
setlocal disableDelayedExpansion
for /f "delims=! tokens=1" %%z in ("%%i") do (
if "%%z"=="%%i" ( rem The line has no !
for /f "tokens=1* delims==" %%a in ("%%i") do (
if "%%a"=="password" ( set "password=%%b" )
)
)
)
endlocal
)
pause

然而,password 变量仅在内部 setlocal 上下文中可用,要导出它,请使用 that answer .

关于windows - 如何从 Windows 批处理脚本中的文件中读取带有 "!"的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32873578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com