簡體   English   中英

PowerShell:使用禁止的字符列表過濾文件名列表

[英]PowerShell: Filter list of file names using list of forbidden characters

我有一個CSV文件,其中包含使用Get-ChildItem構建的文件名列表。 現在,我要獲取該列表,並創建一個文件列表,其中文件名包含某些字符(“,|,',<等...)

我寫了下面的腳本,效果很好; 除非我無法使用?過濾文件? 在文件名中。 我還想使其更簡潔,更直接。 有任何想法嗎?

$csv = Import-Csv .\FILES.CSV

$csvexport = $null

$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*'*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*%*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*|*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*#*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*:*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*<*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*>*"})

$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*/*"})
$csvExport = $csvexport + ($csv | select name,length |Where-Object {$_.name -like "*\*"})

$csvexport | export-csv .\filesupdated.csv -NoTypeInformation -NoClobber

使用RegEx(正則表達式的縮寫)匹配而不是-like比較運算符。 以下內容將嘗試匹配您列出的任何字符以及問號和雙引號。 前面的反斜杠是轉義字符,以確保它是文字匹配,並且每個字符之間的豎線表示“或”,因此它查找任何字符。

$csv = Import-Csv .\FILES.CSV

$csvexport = $null

$csvExport = $csv | select name,length |Where-Object {$_.name -match "\`"|\'|\%|\||\#|\:|\<|\>|\/|\\|\?"}

$csvexport | export-csv .\filesupdated.csv -NoTypeInformation -NoClobber

某些字符可能不需要轉義,但是即使不需要字符,轉義字符也不會造成傷害(我知道),除非您嘗試將其用於特殊字符目的,我們不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM