繁体   English   中英

如何在FOR / F的带引号的字符串内使用行连续

[英]How to use line continuation inside quoted string of FOR /F

我希望能够为FOR /F循环的命令指定多行。 前三(3)个命令按预期工作。 但是,第四个(第4个)命令永远不会让我在带引号的命令内进行换行。 我尝试了cmd.exe行连续字符插入符,PowerShell行连续字符反引号和组合的插入符+反引号。 似乎只是跳过了第四(4)个FOR / F循环而没有错误或消息。

是的,我看到第四个(第4个)FOR / F循环不存在超出显示器右侧的危险。 我正在考虑我有更长的命令的时间。 创建.ps1文件是唯一的答案吗? 可以使线路连续工作吗?

C:>type gd.bat
@ECHO OFF
FOR /F "usebackq tokens=*" %%d IN (`powershell -NoProfile -Command "get-date -format s"`) DO (SET "DT_STAMP=%%d")
ECHO DT_STAMP 1 is %DT_STAMP%

FOR /F %%d IN ('powershell -NoProfile -Command "Get-Date -Format s"') DO (SET "DT_STAMP=%%d")
ECHO DT_STAMP 2 is %DT_STAMP%

FOR /F %%d IN ('powershell -NoProfile -Command ^
    "Get-Date -Format s"') DO (SET "DT_STAMP=%%d")
ECHO DT_STAMP 3 is %DT_STAMP%

FOR /F %%d IN ('powershell -NoProfile -Command ^
    "Get-Date ^`
        -Format s"') DO (SET "DT_STAMP=%%d")
ECHO DT_STAMP 4 is %DT_STAMP%

19:53:02.34  C:\src\t
C:>gd.bat
DT_STAMP 1 is 2018-01-07T19:53:10
DT_STAMP 2 is 2018-01-07T19:53:10
DT_STAMP 3 is 2018-01-07T19:53:10
20:01:39.37  C:\src\t
C:>echo %ERRORLEVEL%
0

您正在尝试执行cmd.exe行继续。 如果引用为ON,则^没有特殊含义。 您可以转义" as ^"以便^行继续。 您还必须转义第二个引号,否则结束符( )将不会被识别。

FOR /F %%d IN ('powershell -NoProfile -Command ^
    ^"Get-Date ^
        -Format s^"') DO (SET "DT_STAMP=%%d")

请注意,这些换行符纯粹是装饰性的-Powershell仍将整个命令作为一行接收(没有任何换行符)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM