2013-10-07 19 views
0

我有一個PowerShell腳本,它將從Microsoft Word文檔中的表中讀取值。但是,當我嘗試將該值寫入文本文件以供以後由批處理文件使用時,它不會按需要工作。文本文件在結尾處顯示帶有點的值。然後,當我從批處理文件中的文本文件中讀取值時,它全部搞砸了。如何在Microsoft Word文檔中檢索Powershell中的字符串值?

$wd = New-Object -ComObject Word.Application 
$wd.Visible = $true 
$doc = $wd.Documents.Open("C:\Users\jxh\Desktop\taskids.doc" ) 
$iTable = $doc.Tables.Item(1) 

$r = $iTable.Rows.Count 
$c = 1 
Write-host $r "x" $c 
$content = $iTable.Cell($r, $c).Range.Text 
Write-host $content 

if ($content) { 
$r = $iTable.Rows.Count - 1 
$c = 1 
Write-host $r "x" $c 
$content = $iTable.Cell($r, $c).Range.Text #| Out-File C:\filename.txt 
Write-host $content 
$iTable.Cell($iTable.Rows.Count, $c).Range.Text=$content+1 } 

$content > C:\filename.txt 


$doc.Close() 
$wd.Quit() 
# Stop Winword Process 
$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($wd) 

回答

0

您在.txt文件中看到的字符是貝爾字符。您可以使用正則表達式運算符剝離說出來是這樣的:

$content -replace "\a","" > 'C:\filename.txt' 

UPDATE:這顯示瞭如何不刪除所有字符的範圍,而不僅僅是單個字符。在這個例子中,任何非數字字符被替換爲空字符:

$content -replace "[^0-9]","" > 'C:\filename.txt' 
+1

即將擺脫點,但我仍然無法正確獲取值。寫入文件的值是86591,但是當我嘗試檢索批處理文件中的值時,我得到■8 ■8作爲從文本文件返回的值 – Bullsfan127

+0

您可以嘗試替換不在指定範圍內的任何字符。所以如果你只想要數字,你的替換可能看起來像這樣$ content -replace「[^ 0-9]」,「」 – Jim

+0

這仍然不能解決問題。它在記事本中打開時看起來很鰭,但是當我檢索值時,我仍然得到相同的結果。也許它與微軟Word編碼或某事有關? – Bullsfan127

相關問題