如何将调用参数分配给 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%% 来显示它(几种方式之一)。