use*_*272 1 powershell datetime cmd batch-file echo
以下命令行在 Windows 批处理文件中不起作用:
Powershell.exe -Command Get-Date -Format 'yyyy-MM-dd HH:mm:ss' echo "Hello World"
Run Code Online (Sandbox Code Playgroud)
预期结果为:2021-05-09 12:00:00 Hello World
但是 PowerShell 输出错误消息:
Get-Date : Cannot bind parameter 'Date'. Cannot convert value "echo" to type "System.DateTime".
Error: "The string was not recognized as a valid DateTime. There is a unknown word starting at index 0."
At line:1 char:9
+ Get-Date <<<< -Format 'yyyy-MM-dd HH:mm:ss' echo Hello World
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand
Run Code Online (Sandbox Code Playgroud)
如何获取 PowerShell 命令的输出以获取格式的日期和时间yyyy-MM-dd HH:mm:ss以及Windows 批处理文件输出中的命令ECHO 的输出?
在 Windows 批处理文件中使用的命令行是:
@for /F "usebackq delims=" %%I in (`%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NoLogo -Command Get-Date -Format 'yyyy-MM-dd HH:mm:ss'`) do @echo %%I Hello World
Run Code Online (Sandbox Code Playgroud)
cmd.exe处理批处理文件的 Windows 命令处理器cmd.exe在后台启动另一个选项,/c并在命令FOR集中指定的命令行作为附加参数。第二个cmd.exe实例运行powershell.exe以获取本地日期时间并以指定格式输出。为处理后台命令进程的STDOUT(标准输出)而编写的 PowerShell输出由正在处理批处理文件的命令进程捕获,并在启动后cmd.exe由 cmd 内部命令FOR终止自身进行处理。
输出行按原样分配给循环变量,I因为delims=用于定义字符串分隔符的空列表以及该行不以分号开头的事实,分号是默认的行尾字符。分配给循环变量的字符串值I由命令ECHO与文本一起输出,以处理正在处理批处理文件的命令进程的STDOUT。
打开命令提示符,运行for /?并从第一页的顶部到最后一页的底部仔细完整地阅读输出帮助。
另请参阅有关以下内容的答案:
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |