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进程中不变地执行,但在特殊字符阶段删除插入符号,因此延迟扩展也将在以后工作。太多,现在您将获得三行
第一行
,
和第二行