我是PowerShell的新手并试图从文件中删除空格。该文件包含一些值并具有空格(缩进):
Hostname=hostname1
Server=server1
Directory=C:\Program Files\Test
Database=db1
我正在尝试删除空格,但保留"目录" line,因为它在路径C:\Program Files\Test
中包含一个空格,这将破坏构建。这是我到目前为止的代码:
foreach ($Line in (Get-Content -Path C:\File.txt) | Where-Object {$_ -notcontains "Directory"}) {
$line -replace " ", ""
Set-Content -Path C:\File.txt
}
但这会产生一个空文件。我做错了什么?
答案 0 :(得分:2)
如果只是删除缩进的问题,可以使用Error at Command Line : 16 Column : 9
Error report -
SQL Error: ORA-00904: "PERMISSIONS"."ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
- 函数:
Trim
$fileContent = Get-Content C:\File.txt
$fileContent | ForEach-Object { $_.Trim() } | Set-Content C:\File.txt
- 函数仅删除前导和尾随空格。如果您只想删除前导或尾随空格,还有Trim
和TrimStart
。
注意:文件的内容首先存储在变量中,以便在调用TrimEnd
之前释放文件系统上的锁。如果您使用其他输出文件,则可以将Set-Content
的结果直接输入Get-Content
。
答案 1 :(得分:1)
Set-Content
通过管道或参数-Value
接收输入。您的代码也没有提供,因此cmdlet正在写一个空文件。此外,您的处理将从输出中完全删除包含字符串“Directory”的所有行。
将您的代码更改为类似的内容,问题将消失:
(Get-Content 'C:\File.txt') | ForEach-Object {
if ($_ -notlike 'Directory=*') {
$_ -replace ' ', ''
} else {
$_
}
} | Set-Content 'C:\File.txt'