如何将调用参数分配给 var 并在 Windows 批处理脚本中回显它
How to assign call argument to var and echo it in Windows batch script
我想这样做:
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"
如何将第二个参数的值复制到变量 "kommune"?还有Echo
呢?
编辑 1:更新为准确的代码。 "inside IF
"
@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
将名为 "FLAGSpace" 的变量设置为值“SpaceN”
所以,%%a
变成KommuneNavnxy
,赋值给argument
,最后2个字符被去掉,使得KommuneNavn
类似地,%%b
得到 yourvalue
,你删除第一个并使 ourvalue
由于字符串 kommune
设置在 if
语句的代码块中,您需要使用 call echo %%var%%
来显示它(几种方式之一)。
我想这样做:
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"
如何将第二个参数的值复制到变量 "kommune"?还有Echo
呢?
编辑 1:更新为准确的代码。 "inside IF
"
@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
将名为 "FLAGSpace" 的变量设置为值“SpaceN”
所以,%%a
变成KommuneNavnxy
,赋值给argument
,最后2个字符被去掉,使得KommuneNavn
类似地,%%b
得到 yourvalue
,你删除第一个并使 ourvalue
由于字符串 kommune
设置在 if
语句的代码块中,您需要使用 call echo %%var%%
来显示它(几种方式之一)。