powershell - 从批处理文件运行Powershell

标签 powershell batch-file command

我正在.bat文件中尝试这些命令

@echo off & setLocal EnableDelayedExpansion

powershell -NoLogo -NoProfile -Command ^    
    "$h = [int](Get-Date -Format "HH");" ^
    "$diff = (7-$h)*3600;" ^
    "if ($h -le 7 -or $h -ge 0) { ECHO $h; ECHO $diff; }"

但这会引发错误,表明命令无法识别。在这里,我尝试获取小时数并从7中减去$ h。然后将结果乘以3600,然后在控制台上打印出来。

谁能告诉我我在做什么错?

最佳答案

脱字号^必须是连续行中的最后一个字符。在代码中,第一行中有一些尾随空格。

考虑具有空格的代码,通过在行的开头和结尾添加管道字符来说明。

|powershell -NoLogo -NoProfile -Command ^    |
|    "$h = [int](Get-Date -Format "HH");" ^|
|    "$diff = (7-$h)*3600;" ^|
|    "if ($h -le 7 -or $h -ge 0) { ECHO $h; ECHO $diff; }"|

运行此命令将提供以下输出:
C:\Temp>t.cmd
Cannot process the command because of a missing parameter. A command must follow -Command.

PowerShell[.exe] [-PSConsoleFile <file> | -Version <version>]
...
'"$h = [int](Get-Date -Format "HH");"' is not recognized as an internal or external command, operable program or batch file.

尽管删除尾随空格的方式是这样的,
| powershell -NoLogo -NoProfile-命令^ |
...
C:\Temp>t.bat
10
-10800

关于powershell - 从批处理文件运行Powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60109526/

相关文章:

Java:VM 初始化期间发生错误

windows - 在 PowerShell 中运行 openssl 命令

powershell - 使用带 SSL 的 PowerShell 'Invoke-WebRequest' 时,如何在断开连接后在客户端删除 'session'?

powershell - 远程 session 上的 Invoke-Command 返回本地值

windows - 如何在重复分隔符处分割大型文本文件,而不是按行号或确切大小

batch-file - 如何使用批处理脚本对两个十六进制数执行按位或运算?

c++ - 在C++中运行powershell脚本时如何隐藏按任意键继续

powershell - 删除包含字符串的文件

windows - 批量使变量全部小写,无需调用

linux - 从终端在 linux 中搜索/查找名称带有整数的文件夹