Windows 为什么我的命令行被重复?
我编写了以下命令行Windows 为什么我的命令行被重复?,windows,cmd,Windows,Cmd,我编写了以下命令行 C:\Users\Administrator>echo TOMATO:50EA |(set/pz=&callset v1=APPLE:30EA%z%&for/F“tokens=1,2 delims=“%K in('echo%v1%”)do(echo项目1:%K,项目2:%L)) 结果: 为什么它还打印了echo命令行?命令行中的默认行为是echo以控制台将要执行的命令。您可以使用@ echo TOMATO:50EA|(set /p z=& for /F "tokens
C:\Users\Administrator>echo TOMATO:50EA |(set/pz=&callset v1=APPLE:30EA%z%&for/F“tokens=1,2 delims=“%K in('echo%v1%”)do(echo项目1:%K,项目2:%L))
结果:
为什么它还打印了
echo
命令行?命令行中的默认行为是echo以控制台将要执行的命令。您可以使用@
echo TOMATO:50EA|(set /p z=& for /F "tokens=1,2 delims= " %K in ('echo APPLE:30EA %z%') do @echo Item 1: %K , Item 2: %L)
但是这段代码(以及您的代码)有一个失败点。只有在开始执行命令之前,z
没有值时,它才会工作
您可以尝试使用延迟扩展
echo TOMATO:50EA|cmd /q /v /c"(set /p z=& for /F "tokens=1,2" %K in ("APPLE:30EA !z!") do echo Item 1: %K , Item 2: %L)"
当使用默认配置(禁用延迟扩展)时,此代码将解决问题。但是,如果您在命令行中启用了延迟扩展,并且z
具有初始值,那么它也将失败
注意:问题中的代码是使用
%K
编写的。这意味着命令行。请记住,在批处理文件中,可替换参数的需要转义百分号(%%K
)
echo TOMATO:50EA|cmd /q /v /c"(set /p z=& for /F "tokens=1,2" %K in ("APPLE:30EA !z!") do echo Item 1: %K , Item 2: %L)"