我有一个包含文件夹的数组 我需要在应用程序中为每个文件夹运行一个命令,因此我正在使用foreach命令。 但是,在参数列表中,我需要分别指定每个文件夹的路径,因此,假设我有4个文件夹(Folder1,Folder2,Folder3,Folder4),并且在foreach脚本块中,我需要使用-Argumentlist进行启动处理,其中包含几个应用程序命令和文件夹的名称。每个文件夹分别执行相同的操作。
我遇到的问题是为每个文件夹运行ArgumentList,而每个文件夹都来自同一数组。我一直在努力弄清楚,但请问是否仍然无法理解。
我一直想弄清楚的是,这些基本上是我的笔记:
$folders=Get-ChildItem C:\AppFolder
$argum="-appcommand /path/$folders"
foreach ($folder in $folders) {
Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList $argum
}
我无法为每个文件夹写单独的行,因为每台计算机上的行会有所不同,并且我需要一个完全自动化的解决方案。
我知道这很令人困惑,因此我将尝试逐步重写我要实现的目标。我需要使它自动化:
对于$ folders = Folder1,Folder2,Folder3,Folder4中存储的每个文件夹
对于Folder1: 开始过程-FilePath'C:\ Program Files \ App1 \ run.exe'-ArgumentList'-appcommand / path / Folder1' (注意:-appcommand / path /是一个常量)
对于Folder2: 开始过程-FilePath'C:\ Program Files \ App1 \ run.exe'-ArgumentList'-appcommand / path / Folder2'
对于Folder3: 开始过程-FilePath'C:\ Program Files \ App1 \ run.exe'-ArgumentList'-appcommand / path / Folder3'
对于文件夹4: 开始过程-FilePath'C:\ Program Files \ App1 \ run.exe'-ArgumentList'-appcommand / path / Folder4'
编辑: 我设法使用新的组合变量来解决此问题,然后使用Invoke-Expression运行它们。以下是我的概述。
$items=Get-ChildItem C:\AppFolder -Directory | select -ExpandProperty Name
$argum="Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand ""/Path/"
foreach ($item in $items) {
$Tasks=$argum+$item+"""'"
Invoke-Expression $Tasks
}
我知道这是一种胶带解决方案,但最终它可以工作。谢谢好人的投入!
答案 0 :(得分:0)
我不确定我是否正确解决了您的问题。
但是尝试这样:
$folders=Get-ChildItem C:\AppFolder
foreach ($folder in $folders) {
Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList "-appcommand $($Folder.FullName)"
}
答案 1 :(得分:0)
编辑: 我设法使用新的组合变量来解决此问题,然后使用Invoke-Expression运行它们。以下是我的概述。
$items=Get-ChildItem C:\AppFolder -Directory | select -ExpandProperty Name
$argum="Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand ""/Path/"
foreach ($item in $items) {
$Tasks=$argum+$item+"""'"
Invoke-Expression $Tasks
}
我知道这是一种胶带解决方案,但最终它可以工作。谢谢好人的投入!