如何将调用参数分配给var并在Windows批处理脚本中回显它

时间:2015-01-13 12:42:19

标签: windows batch-file cmd

我想这样做:

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"

1 个答案:

答案 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%%来显示它(多种方式之一)。