2013-01-21 111 views
2

我有這樣的代碼:如何從文件夾中的所有文本文件中刪除單詞?

$txt = get-content c:\work\test\01.i 

$txt[0] = $txt[0] -replace '-' 

$txt[$txt.length - 1 ] = $txt[$txt.length - 1 ] -replace '-' 

$txt | set-content c:\work\test\01.i 

它只是刪除從第一行,並在文本文件中最後一行-,但我需要爲其中包含超過5K的目錄樹中的所有文本文件,這樣做文本文件。我應該如何修改這段代碼?

文本文件的所有名稱都是隨機的。

我需要在PowerShell中做到這一點。

它是一個目錄樹,在c:\ work \ test下會有更多lvl的子文件夾,然後包含所有的文本文件。

請幫忙。謝謝

+0

然後,您希望能夠從指定文件夾中獲取所有文件並循環遍歷每個文件。你可能能夠從這個數據中得出結論:http://gallery.technet.microsoft.com/office/Copy-all-SharePoint-Files-0999c53f –

+0

Blitzcrank ... LoL? – PinkElephantsOnParade

+0

您需要某種方式來告訴要觸摸哪些文件。 Fileextension,名稱模式。我提供了一個可以修改您的模式的答案。防爆。如果它們所在的文件夾只包含這些文件,那麼你可以在我的答案中刪除'-Filter * .i'。我們無法觸及所有文件,因爲它會嘗試打開.exe文件和sh * t,它會變得很難看:P –

回答

3

通過文件擴展名或某種模式獲取所有文件並循環遍歷它們。可以說這是所有文件的擴展名爲.i。請嘗試:

Get-ChildItem -Path "c:\work\test" -Filter *.i -Recurse | where { !$_.PSIsContainer } | % { 
    $txt = Get-Content $_.FullName; 
    $txt[0] = $txt[0] -replace '-'; 
    $txt[$txt.length - 1 ] = $txt[$txt.length - 1 ] -replace '-'; 
    $txt | Set-Content $_.FullName 
    } 
+0

的Blitzcrank這是我需要的。我試過了,效果很好。 – Blitzcrank

+0

謝謝你。非常感謝!! – Blitzcrank

+0

哦,1個問題,如何在目錄tee結構上運行這個?如果只有c:\ work \ test下的文件,如果c:\ work \ test \下有文件夾,文本文件將在該子文件夾下等等,該如何工作? – Blitzcrank

相關問題