3

我有一个源自 unix 环境的配置文件,其中基本路径被替换为 Windows 中的基本路径:

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 路径的最后一行。

4

2 回答 2

1

您可以尝试替换所有路径:

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

仅针对 Windows 路径,根据每行包含 Windows 路径匹配“A_LETTER:\”模式的事实......不太好,但它可以完成这项工作:

Get-Content "C:\temp\path.txt" | % {if ($_ -match "[A-Z]:\\"){$_ -replace '/','\'}else {$_}} | set-content "C:\temp\path Bis.txt"
于 2013-06-18T19:17:13.317 回答
-1

您也可以尝试使用 .Net Path 类:

Get-Content "C:\temp\config.txt" | % { [System.Io.Path]::GetFullPath($_) }
于 2013-06-18T20:22:40.953 回答