首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Powershell中将数组传递给开始进程中的参数?

如何在Powershell中将数组传递给开始进程中的参数?
EN

Stack Overflow用户
提问于 2021-12-25 12:16:05
回答 2查看 524关注 0票数 1

我正在编写一个脚本来播放某个播放器中的某些文件。我使用get来获取一个文件名数组。然后,我想使用启动进程来播放这些文件。但是,如何将这些文件名添加到player程序的参数中呢?

我使用了Start-Process -FilePath "C:\Program Files\DAUM\PotPlayer\PotPlayerMini64.exe" -ArgumentList $selected_items,但它似乎不工作,文件没有播放。

注意,文件名中有空格。

EN

回答 2

Stack Overflow用户

发布于 2021-12-25 12:40:40

你可以ForEach-Object

代码语言:javascript
复制
Get-ChildItem . | ForEach-Object {Start-Process -FilePath "C:\Program Files\DAUM\PotPlayer\PotPlayerMini64.exe" -ArgumentList $_.FullName}
票数 2
EN

Stack Overflow用户

发布于 2021-12-25 15:25:09

您不需要启动进程(另外,-argumentlist不太容易处理带有空格的文件名)。

代码语言:javascript
复制
& "C:\Program Files\DAUM\PotPlayer\PotPlayerMini64.exe" 
C:\Program` Files\DAUM\PotPlayer\PotPlayerMini64.exe
$env:path += ';C:\Program Files\DAUM\PotPlayer'; PotPlayerMini64

即使使用启动过程,它也会随着程序的不同而变化.例如,Emacs可以接受由空格分隔的多个文件参数。如果文件名有空格,则需要双引号。外部程序不知道数组是什么,启动进程将它们转换为一个字符串,每个元素之间都有空格。

代码语言:javascript
复制
start emacs file1,file2,'"my file"'

get-wmiobject win32_process | ? name -eq emacs.exe | % commandline
"c:\program files\emacs\bin\emacs.exe" file1 file2 "my file"

ps emacs | % commandline  # ps 7
"c:\program files\emacs\bin\emacs.exe" file1 file2 "my file"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70479960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档