Powershell 当图像';文件名是否包含括号?

Powershell 当图像';文件名是否包含括号?,powershell,filenames,Powershell,Filenames,以下是全部代码: $kansio = ($args[0]).replace("'","") $tiedostot = 0 Get-ChildItem $kansio | foreach {if ($_.Extension -eq ".jpg"){$_.FullName}} | foreach { $id = (Start-process mspaint $_ -ea 0 -PassThru).Id $vikaTallennus = (Get-ChildItem $_).Las

以下是全部代码:

$kansio = ($args[0]).replace("'","")
$tiedostot = 0

Get-ChildItem $kansio | foreach {if ($_.Extension -eq ".jpg"){$_.FullName}} |
foreach {

    $id = (Start-process mspaint $_ -ea 0 -PassThru).Id
    $vikaTallennus = (Get-ChildItem $_).LastWriteTime

    [void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
    [void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")

    do
    {
        try
        {
            if ((Get-Process -Id $id -ea 'stop').WaitForInputIdle())
            {
                [Microsoft.VisualBasic.Interaction]::AppActivate($id)
                [System.Windows.Forms.SendKeys]::SendWait("^s")
                [System.Windows.Forms.SendKeys]::SendWait("{esc}")
                for ($i=1; $i -le 10; $i++)
                {
                    if ((Get-ChildItem $_).LastWriteTime -gt $vikaTallennus)
                    {
                        try
                        {
                            Stop-Process -Id $id -force -ea 'stop'
                            Write-Host "Done: $_" -foregroundcolor Green
                            break
                        }
                        catch
                        {
                            Write-Host "Failed to close the process" -foregroundcolor DarkRed
                            Start-Sleep -milliseconds 100
                        }
                    }
                }
            }
        }
        catch
        {
            Write-Host "Failed to catch the process" -foregroundcolor DarkRed
            Start-Sleep -milliseconds 100
        }
    } until ((Get-Process -Id $id -ea 0) -eq $null -or $id -eq $null)
    $tiedostot++
}
Write-Host "Files saved: $tiedostot" -foregroundcolor Green
如果JPG图片的文件名包含“
[
”或“
]
”,PowerShell将无法关闭MSPaint。为什么?
有什么解决办法?我可以在这里使用literalname吗?

是的,如果要使用
Get ChildItem
返回带括号(和其他一些奇怪字符)的文件/文件夹,应该使用
-LiteralPath
参数。一篇像样的文章

因此,如果您希望在文件名中包含此类字符,并且不需要通配符支持,则相关行应为:

if ((Get-ChildItem -LiteralPath $_).LastWriteTime -gt $vikaTallennus)