【问题标题】:How to direct output from a Powershell command into a CMD variable如何将 Powershell 命令的输出定向到 CMD 变量
【发布时间】:2021-10-04 03:20:13
【问题描述】:

我正在使用 PowerShell 获取文件的文件版本

C:\WINDOWS\system32>powershell (Get-Command C:\Users\lafarnum\Downloads\aniteloggingclientapi.dll).FileVersionInfo.FileVersion 1.12.0.4

输出文件版本为 1.12.0.4。 我想将此文件版本像正常分配一样通过管道传输到 DOS CMD 变量中,但问题是它只是分配 PowerShell 命令字符串,而不是 PowerShell 命令的输出

C:\WINDOWS\system32>set pfpathset=powershell (Get-Command C:\Users\lafarnum\Downloads\aniteloggingclientapi.dll).FileVersionInfo.FileVersion

C:\WINDOWS\system32>echo %pdpathset% %pdpathset%

C:\WINDOWS\system32>echo %pfpathset% powershell (Get-Command C:\Users\lafarnum\Downloads\aniteloggingclientapi.dll).FileVersionInfo.FileVersion

C:\WINDOWS\system32>

所以PS命令输出好像没有直接指向CMD STDOUT输出? 那么我是否必须将 PS 命令的输出通过管道传输到另一个字符串变量中,然后将该变量分配给我的 pfpathset 变量?还是我必须使用 ps 脚本来执行此操作?

很抱歉,如果这是一个基本问题,但我是一个 powershell 新手,因此我们将不胜感激。

谢谢你的期待

【问题讨论】:

  • 一路去PS吧。老实说,我没有理由想到为什么要在 2021 年混合使用 Powershell 和 CMD。
  • 你在解决什么问题?您是否在问如何在 cmd.exe shell 脚本(批处理文件)中获取文件的版本号元数据?我也想知道和之前的评论一样:为什么不完全放弃 cmd.exe 并在 PowerShell 中编写整个脚本?

标签: powershell


【解决方案1】:

类似于Assign command output to variable in batch file。由于括号,您需要双引号。

在 .bat 文件中放入 %%i 而不是 %i。

for /f %i in ('powershell "(Get-Command notepad).FileVersionInfo.FileVersion"') do set output=%i

echo %output%
10.0.19041.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 2019-03-20
    • 2012-11-07
    • 1970-01-01
    • 2016-09-09
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多