如何在 FOR /F 的引用字符串中使用续行
How to use line continuation inside quoted string of FOR /F
我希望能够为 FOR /F
循环的命令指定多行。前三 (3) 个命令按预期工作。但是,第四个(第 4 个)命令永远不会让我在引用的命令中换行。我已经尝试了 cmd.exe 行连续字符插入符、PowerShell 行连续字符反引号和组合插入符+反引号。它似乎只是跳过了第四个 (4th) 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 行继续。如果引用打开,^
没有特殊意义。您可以将 "
转义为 ^"
,以便 ^
行继续工作。您还必须转义第二个引号,否则关闭的 )
将无法识别。
FOR /F %%d IN ('powershell -NoProfile -Command ^
^"Get-Date ^
-Format s^"') DO (SET "DT_STAMP=%%d")
请注意,换行符纯粹是装饰性的 - Powershell 仍然将整个命令作为一行接收(没有任何换行符)。
我希望能够为 FOR /F
循环的命令指定多行。前三 (3) 个命令按预期工作。但是,第四个(第 4 个)命令永远不会让我在引用的命令中换行。我已经尝试了 cmd.exe 行连续字符插入符、PowerShell 行连续字符反引号和组合插入符+反引号。它似乎只是跳过了第四个 (4th) 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 行继续。如果引用打开,^
没有特殊意义。您可以将 "
转义为 ^"
,以便 ^
行继续工作。您还必须转义第二个引号,否则关闭的 )
将无法识别。
FOR /F %%d IN ('powershell -NoProfile -Command ^
^"Get-Date ^
-Format s^"') DO (SET "DT_STAMP=%%d")
请注意,换行符纯粹是装饰性的 - Powershell 仍然将整个命令作为一行接收(没有任何换行符)。