【发布时间】:2020-11-09 06:37:25
【问题描述】:
我在 foreach 循环中有 foreach 循环。我做了一些字符串处理并用特定的字符串映射一个文件。 我使用消息框让用户知道哪个文件匹配或不匹配。我试过这个,它有效,但消息框显示 6 次,但它应该是 3 次。任何人都可以帮助我。谢谢。
Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$Process = "D:\Pro"
$AllFiles = Get-ChildItem -Path $Process\*.pro -File | ForEach-Object {$_.BaseName.Substring(45)}
$Selected = @("XY11WWOLAT601A1ABA", "XY11WWOLAT601APABA", "XY11WWOLAT601ZHABA") | ForEach-Object {$_.Substring(2,13)}
foreach ($job in $AllFiles)
{
$JobSplit = $job -split "_"
$Name = [string]::Concat($JobSplit)
foreach ($SW in $Selected)
{
if ($SW -like "*$Name")
{
[System.Windows.Forms.MessageBox]::Show("This SW: $SW`nNOT available.","[Error]" , "OK", "Error")
}
else {
[System.Windows.Forms.MessageBox]::Show("This SW: $SW`nAvailable.","[Info]" , "OK", "Info")
}
}
}
这是AllFiles 示例:
123456789A_A2E9D28DA533_20200702045123_XX_ABC11WWOLAT601_A1.pro
123456789A_A2E9D28DA533_20200702011155_XX_ABC11WWOLAT601_ZH.pro
【问题讨论】:
-
抱歉,meeage 框只显示了 3 次。你确定你在 d:\pro 中只有一个文件吗?重新加载你的 PowerShell。
-
不,我在
d:\pro@JPBlanc 中有多个文件 -
因此,对于每个文件,消息出现 3 次。
-
当我用一个文件运行它时,这不是 cas。
-
@SBR 这样的讨论是没有用的。通过一个最小的例子告诉我们如何准确地重现您的问题。然后我们可以看看这个确切的问题。因此,当您只为我们提供一个文件名(这很好并且希望足够)时,然后描述/讨论由这个文件名引起的问题。长话短说:如果
D:\pro中只有一个文件,您会收到哪些消息/错误?
标签: powershell loops foreach