2013-06-18 93 views
2

我有一個配置文件從UNIX環境,其中基本路徑是Windows替換爲基本路徑始發:變化路徑在一個文件中反斜槓使用PowerShell

inputdir = D:\etl-i_win_4/input/000/ 
inputdir = D:\etl-i_win_4/input/001/ 
inputdir = D:\etl-i_win_4/input/002/ 
inputdir = D:\etl-i_win_4/input/003/ 
inputdir = D:\etl-i_win_4/input/004/ 
inputdir = D:\etl-i_win_4/input/005/ 
inputdir = D:\etl-i_win_4/input/006/ 
inputdir = D:\etl-i_win_4/input/007/ 
inputdir = D:\etl-i_win_4/input/008/ 
inputdir = D:\etl-i_win_4/input/009/ 

movepostcmd = D:\etl-i_win_4/divider/bin/os-independant/divider.postprocessing 

ctrldir = D:\etl-i_win_4/divider/applogs/ 

lockglob = /opt/netmind/test/etl-festo/kette/divider/applogs/dividerglob.lock 

我需要用反斜槓適當的Windows路徑。函數如何看起來像讀取配置文件,用windows路徑標識行,並用\替換所有/?請注意,應該忽略具有unix路徑的最後一行。

+0

在PowerShell中,通常,反斜線和forwa路徑中的rd斜線是可以互換的。那麼,你確定你確實需要更換正斜槓嗎? –

+2

http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the-windows-command-line-envir –

+0

@Klas:這是一個一個C++程序的配置文件。它不喜歡帶有斜線的窗口路徑。所以是的,我需要替換它們。 – mles

回答

1

你可以嘗試THID更換所有路徑:

Get-Content "C:\temp\config.txt" | % {$_ -replace '/','\'} | set-content "C:\temp\config Bis.txt" 

不僅僅是Windows路徑accordind這樣的事實:包含Windows路徑匹配每行「A_LETTER:\」百通......不太好,但它可以做的工作:

Get-Content "C:\temp\path.txt" | % {if ($_ -match "[A-Z]:\\"){$_ -replace '/','\'}else {$_}} | set-content "C:\temp\path Bis.txt" 
+0

如果第一個路徑分隔符也是'/',那麼我會使''A-Z]:'或'[A-Z]:[\\ /]'這個模式。 –

-1

您也可以嘗試使用的.Net Path類:

Get-Content "C:\temp\config.txt" | % { [System.Io.Path]::GetFullPath($_) } 
+0

這也將Unix路徑轉換爲Windows路徑。 –

相關問題