我有一个源自unix环境的配置文件,其中basepath被windows中的basepath替换:
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路径的行,并用/
替换所有\
?请注意,应忽略带有unix路径的最后一行。
答案 0 :(得分:1)
您可以尝试替换所有路径:
Get-Content "C:\temp\config.txt" | % {$_ -replace '/','\'} | set-content "C:\temp\config Bis.txt"
仅针对Windows路径,事实上包含Windows路径的每一行都匹配“A_LETTER:\”patern ...不太好,但它可以完成这项工作:
Get-Content "C:\temp\path.txt" | % {if ($_ -match "[A-Z]:\\"){$_ -replace '/','\'}else {$_}} | set-content "C:\temp\path Bis.txt"
答案 1 :(得分:-1)
您也可以尝试使用.Net Path类:
Get-Content "C:\temp\config.txt" | % { [System.Io.Path]::GetFullPath($_) }