我想这样做:
set kommune
FOR /F "tokens=* delims=" %%x in (DBLib.txt) DO (
CALL :decryptLine "%%x"
)
GOTO:eof
:decryptLine
for /f "tokens=1,* delims==" %%a in ("%~1") do set argument=%%a & set value=%%b
set "argument=%argument:~0,-2%"
set "value=%value:~1%"
call:updateVar "%argument%" "%value%"
GOTO:EOF
:updateVar
IF "%~1" == "KommuneNavn" (
ECHO "%~2"
ECHO "KommuneNavn"
set kommune=%~2
ECHO kommune = "%kommune%" testhest
)
输出的内容:
"ABC Test Kommune"
"KommuneNavn"
"kommune = "" testhest"
如何将secont参数的值复制到变量" kommune"?而Echo
呢?
编辑1:更新为确切的代码。 "在IF
"
答案 0 :(得分:2)
@ECHO OFF
SETLOCAL
set kommune
FOR /F "tokens=* delims=" %%x in (q27922463.txt) DO (
CALL :decryptLine "%%x"
)
GOTO:eof
:decryptLine
for /f "tokens=1,* delims==" %%a in ("%~1") do set "argument=%%a" & set "value=%%b"
set "argument=%argument:~0,-2%"
set "value=%value:~1%"
call:updateVar "%argument%" "%value%"
GOTO:EOF
:updateVar
IF "%~1" == "KommuneNavn" (
ECHO "%~2"
ECHO "KommuneNavn"
set kommune=%~2
CALL ECHO kommune = "%%kommune%%" testhest
)
GOTO :eof
关键点:您尚未向我们展示您文件的内容,因此我们必须构建它:和我已更改文件名以适合我的系统(q27922463.txt
)
q27922463.txt
KommuneNavnxy=yourvalue
输出生成:
"ourvalue"
"KommuneNavn"
kommune = "ourvalue" testhest
请注意set
作业中引号的位置。批处理对SET
语句中的空格敏感。 SET FLAG = N
将名为“FLAG Space ”的变量设置为值“ Space N”
因此,%%a
变为KommuneNavnxy
,被分配到argument
,最后2个字符被删除,从而KommuneNavn
同样,%%b
获取yourvalue
,您删除第一个并生成ourvalue
由于字符kommune
是在if
语句的代码块中设置的,因此您需要使用call echo %%var%%
来显示它(多种方式之一)。