2010-11-08 91 views

回答

11

這應該照顧它,使用Powershell。這可以通過直接使用cmd.exe的內容和一些內置的Windows可執行文件來完成,但這會更加難以理解。

它會在一些文件中讀取,並在每行:

  • a
  • 取代[o
  • 取代]u

需要的越獄更換|[]|都是PowerShell中的特殊字符,反引號`用於對命令進行自動換行。

$filename="textfile.txt" 
$outputfile="$filename" + ".out" 

Get-Content $filename | Foreach-object { 
    $_ -replace '\[', 'a' ` 
     -replace '\]', 'o' ` 
     -replace '\|', 'u' 
} | Set-Content $outputfile 

如果你要處理的文件列表,你可以建立一個數組來做到這一點,並通過陣列上運行。

$filenames = @("/path/to/File1.txt", "file2.txt", "file3.txt") 
foreach ($file in $filenames) { 
    $outfile = "$file" + ".out" 

    Get-Content $file | Foreach-object { 
     $_ -replace '\[', 'a' ` 
      -replace '\]', 'o' ` 
      -replace '\|', 'u' 
    } | Set-Content $outfile 
} 
+0

好的,非常感謝! – jjoras 2010-11-08 19:19:14

+1

你真的不應該在Get-Content中使用(),除非你必須完全編輯這個文件 - 它會在更換之前收集所有的行,這對於大文件來說非常昂貴 – Jaykul 2010-11-09 17:23:55

+0

@Jaykul,謝謝,我會更新我的帖子。 – birryree 2010-11-09 17:41:32