Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Batch file bat只打印第一行_Batch File - Fatal编程技术网

Batch file bat只打印第一行

Batch file bat只打印第一行,batch-file,Batch File,我正试着在几行上下功夫。看看这个小测试: set NLM=^ set NL=^^^%NLM%%NLM%^%NLM%%NLM% echo First line%NL%second line | jrepl.bat i o 是否有理由只打印第一行: Forst lone ?管道是在进程之间创建的,因此,echo命令在一个单独的cmd实例中执行,该实例不会像您期望的那样解析输入行(带有内行提要) 试一试 setlocal enableextensions disabledelayedexpan

我正试着在几行上下功夫。看看这个小测试:

set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%
echo First line%NL%second line | jrepl.bat i o
是否有理由只打印第一行:

Forst lone

管道是在进程之间创建的,因此,
echo
命令在一个单独的
cmd
实例中执行,该实例不会像您期望的那样解析输入行(带有内行提要)

试一试

setlocal enableextensions disabledelayedexpansion
set NLM=^


set NL=^%NLM%%NLM%^%NLM%%NLM%
cmd /q /v /c"echo First line!NL!second line" | jrepl.bat i o

正如@MCND提到的,这是子进程的问题,该行被解析了两次

但它可以通过一个简单的换行来完成

set LF=^


cmd /q /v /c"echo First line^!LF^!second line" | jrepl.bat i o
这与延迟扩展模式无关

就像批处理文件中启用了延迟扩展一样,感叹号在延迟扩展解析器阶段转义(并且删除插入符号)。

否则,禁用延迟扩展时,带有插入符号的行将在子cmd.exe进程中不变地执行,但在特殊字符阶段删除插入符号,因此延迟扩展也将在以后工作。

太多,现在您将获得三行
第一行
第二行