2014-06-18 76 views
0

我正在編寫一個腳本來準備將csv上傳到SQL中。PowerShell:字符串替換每次都不起作用?

我有兩個幾乎相同的命令(1和3),但第一個不起作用,第三個是。沒有錯誤,它只是沒有做我期望的事情。

我做了3個步驟,首先我擺脫了源文件中的所有管道(這是什麼不起作用),然後我讀取和寫入CSV(這擺脫了使用引號的不同處理,而不是使用引號並將分隔符更改爲管道)。最後,我擺脫了所有報價,因爲除了分隔符之外不應再有其他管道。

# --------------------------------------------------------- 
# 1. Get rid of all pipes 
#---------------------------------------------------------- 
get-content ($csvfile + ".csv") | ForEach-Object { $_ -replace "|",""} | Set-Content ($csvfile + "2.csv") 

# --------------------------------------------------------- 
# 2. Make standard CSV but use Pipes as delimiter 
#---------------------------------------------------------- 
Import-csv -path ($csvfile + "2.csv") -Delimiter ',' | Export-CSV -path ($csvfile + " 3.csv") -Delimiter '|' 

# --------------------------------------------------------- 
# 3. Get rid of all Quotes 
#---------------------------------------------------------- 
get-content ($csvfile + "3.csv") | ForEach-Object { $_ -replace '"',""} | Set-Content ($csvfile + "4.csv") 

擺脫零件是相同的。第二個工作,它擺脫了所有的報價,但第一個不起作用,管道仍然在。我嘗試了不同的角色,但由於某種原因,沒有在這個位置工作。

我錯過了什麼?

謝謝!

回答

2

只是逃脫|符號與\\|如下,它會正常工作;原因|是一個特殊字符(命令管道符號)。

get-content ($csvfile + ".csv") | ForEach-Object { $_ -replace "\|",""} | 
Set-Content ($csvfile + "2.csv") 

所以,如果我有一個像dadad|xcvxvv|sdffgfg然後輸入命令後的輸出看起來像dadadxcvxvvsdffgfg

+0

太謝謝你了!就是這樣。我之前沒有想過這件事,我感到很難過。 – MarcoK

+0

好的,這就是學習的過程。 – Rahul