cpp*_*der 4 windows cmd batch-file
我正在编写一个批处理脚本来从文件中读取.该文件包含诸如token = value之类的行.我有代码来解析文件的每一行,它存储在%% i中.以下代码尝试提取令牌的值:
请注意,此脚本正在使用延迟扩展,如评论中所述.
for /f "tokens=1* delims==" %%a in ("%%i") do (
if "%%a"=="password" ( set password=%%b )
)
Run Code Online (Sandbox Code Playgroud)
如果令牌密码的值包含"!",那么"!" 被跳过,只有其余的字符串存储在变量密码中.例如,如果该行是:
密码=测试!
然后变量密码=测试.我试图以各种方式更改输入文件,批处理脚本读取除"!"之外的所有内容.我用过:
密码=测试%!
密码=测试%!
一切都跳过"!".知道如何用"!"读取字符串 变成一个变量?
假设您正在使用延迟变量扩展,请暂时禁用它以进行比较.为了在非延迟模式下进行比较,我将解析当前行拆分,!
并检查第一个令牌是否与整行相同:
@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
Run Code Online (Sandbox Code Playgroud)
但是password
变量只能在内部setlocal上下文中使用,导出它使用该答案.
归档时间: |
|
查看次数: |
454 次 |
最近记录: |