2014-07-18 116 views
0

我有以下Power Shell腳本我需要修改。通配符文件夾匹配powershell

$filepath = "F:\feeds\Amazon\" 
$temppath = $filepath+"temp.csv" 
$files = ls -Path $filepath *.csv 
foreach ($file in $files){ 
    gc $file.FullName | 
    % { if($_.indexOf("|~|") -eq -1) {$_ -replace "`"((?:`"`"|.)*?)`"(?!`")", "|~|`$1|~|" -replace "`"`"", "`""} else {$_ -replace " ", " "}} | 
    sc $temppath 
    ri $file.fullName 
    rni -Path $temppath -NewName $file.fullName 
} 

此腳本循環遍歷定義文件夾中的所有.csv文件並更改文本限定符。現在我需要改變這一點,我被困住了。

基本上我的CSV文件被分成多個文件夾。亞馬遜1,亞馬遜2,亞馬遜3等。是否有任何外卡匹配我可以在這裏做的事情,以便它查看名稱以亞馬遜開始的所有文件夾?

我不想遍歷文件夾。

回答

5

...該*字符?試試這個:

$filepath = "F:\feeds\Amazon*" 
$files = ls -Path $filepath *.csv -recurse 
foreach ($file in $files){ 
    $temppath = $file.directoryName+"\temp.csv" 
    gc $file.FullName | 
    % { if($_.indexOf("|~|") -eq -1) {$_ -replace "`"((?:`"`"|.)*?)`"(?!`")", "|~|`$1|~|" -replace "`"`"", "`""} else {$_ -replace " ", " "}} | 
    sc $temppath 
    ri $file.fullName 
    rni -Path $temppath -NewName $file.fullName 

}

1

是枝條Get-child-Item Cmdlet的(目錄),你可以對文件夾使用通配符匹配:

Get-ChildItem "C:\temp\Amazon?\" -include *.csv -Recurse 
+0

這是偉大的。請注意,使用問號(?)它不會選擇Amazon10和其他文件夾。所以不得不與* – Ankit