Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 为什么我的命令行被重复?_Windows_Cmd - Fatal编程技术网

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)"