2016-11-07 42 views
2

我有一個問題,無法用我將它包裝的方式解決。我將最新的代碼包括在內,但這些代碼並不能給我帶來期望的結果,而且代碼中的解決方案一次只能運行一個文件。但我無法自動循環瀏覽每個文件。Get-ChildItem Zero結果輸出

簡而言之,我有一個包含許多CSV文件的目錄CSV文件中的一些條目具有負值( - )我需要在所有實例中刪除此減號。

現在什麼工作是,如果我使用以下(在單個文件)

$content = Get-Content "L:\Controls\BCR\0001cash.csv" | ForEach {$_ -replace $variable, ""} | Set-Content "L:\controls\bcr\0001temp.csv" 

我所試圖做的是通過自動,而不是這些對象的幾千迭代不得不提到他們的個人。

我開始:

$Directory = "L:\Controls\BCR\" 
$variable = "-" 
$suffix = ".tmp" 

要定義的目錄,減號,我要刪除我想改變的文件的後綴,...

$Files = Get-ChildItem $Directory | Where-Object {$_.Extension -like "*csv*"} | Where-Object {$_.Name -like "*cash*"} 

是獲得每個我希望使用的文件

然後我與

ForEach ($File in $Files) { Get-Content $Files | ForEach {$_ -replace $variable, ""} | Set-Content {$_.Basename + $Variable} 

結果卻不算什麼......

不知所措?任何人???

$Directory = "L:\Controls\BCR\" 
$variable = "-" 
$suffix = ".tmp" 


$Files = Get-ChildItem $Directory | Where-Object {$_.Extension -like "*csv*"} | Where-Object {$_.Name -like "*cash*"} 

$process = ForEach ($File in $Files) { Get-Content $Files | ForEach {$_ -replace $variable, ""} | Set-Content {$_.BaseName + $suffix} 



} 
+0

嗨,'Set-Content'在***文件中寫入內容***。 'Rename-Item'會重命名它。 – sodawillow

回答

1

您使用的是錯誤的變量Get-Content小命令(的$Files代替$File)。你也可以簡化你的腳本:

$Directory = "L:\Controls\BCR\" 
$variable = "-" 
$suffix = ".tmp" 
Get-ChildItem $Directory -Filter '*cash*csv' | 
    ForEach-Object { 
     (Get-Content $_ -Raw) -replace $variable | 
      Set-Content {$_.BaseName + $suffix} 
    } 
+0

嘿馬丁感謝你的回答,比我寫的要乾淨得多,我花了一些時間去了解我以前沒有見過的那個 - 以及在過濾器中包含兩個術語,我再也不知道如此巨大的感謝這裏!您的解決方案讓我對純粹偶然嘗試的方法更加優雅。不夠感謝你!我最終使用了。 –

+0

$ Directory =「L:\ Controls \ BCR \」 $ variable =「 - 」 $ suffix =「.tmp」 Get-ChildItem $ Directory -Filter'* cash * csv'| ForEach-Object {Get-Content $ _Raw)-replace $ variable | ForEach-Object { Set-Content $ _ -Force } –

+0

這很好。不用謝! –