Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
powershell在文件上写入会导致无限循环_Powershell - Fatal编程技术网

powershell在文件上写入会导致无限循环

powershell在文件上写入会导致无限循环,powershell,Powershell,所以我试着做一些简单的文本操作。我发现,使用下面的代码写入不同名称的文件时,效果很好: PS C:\Users\uzfm> Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"} > .\pathSystem1.txt 但是,如果我试图像这样覆盖原始文件: PS C:\Users\uzfm> Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"} > .\

所以我试着做一些简单的文本操作。我发现,使用下面的代码写入不同名称的文件时,效果很好:

PS C:\Users\uzfm> Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"} > .\pathSystem1.txt
但是,如果我试图像这样覆盖原始文件:

PS C:\Users\uzfm> Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"} > .\pathSystem.txt
该命令被卡在一个无限循环中,我只是在试图覆盖该文件时试图理解该功能的根本原因


如果有一种可行的方法,我们也会很感激。

尝试添加parenthèses,执行read all和end可以写入同一个文件,如下所示

(Get-Content .\pathSystem.txt | %{$_ -replace ";","`r`n"}) > .\pathSystem.txt
或者像这样:

(Get-Content .\pathSystem.txt) -replace ";","`r`n" > .\pathSystem.txt

pathsystem.txt文件的内容是什么。您能提供一个样本吗?它实际上只是path变量的csv文本文件。i、 C:\Sybase32\DBISQL\bin;C:\Sybase32\DataAccess\ADONET\dll;C:\Sybase32\DataAccess\OLEDB\dll;C:\Sybase32\OCS-15\u 0\lib3p;C:\Sybase32\OCS-15\u 0\dll;C:\Sybase32\OCS-15\u 0\bin;C:\Sybase64\DBISQL\bin;C:\Sybase64\DataAccess64\ADONET\dll;C:\Sybase64\DataAccess\ADONET\dll;C:\Sybase64\DataAccess64\ODBC\dll;C:\Sybase64\DataAccess\ODBC\dll;C:\Sybase64\DataAccess64\OLEDB\dll;C:\Sybase64\DataAccess\OLEDB\dll;这基本上是一个相同的问题。只需将第一部分括在括号中即可。在UNIX系统上——如果PowerShell在这方面有所不同的话,我会感到惊讶——管道是并行执行的,所有事情都同时发生。因此,输出重定向是在管道启动时发生的,而不是在管道完成时发生的,因此
Get Content
试图从结果写入的同一个文件中读取结果——因此是循环。否则,您将需要添加缓冲并失去并行化(同时也失去了在内容随时间写入时监视内容的能力),这就是为什么更改此语义会有代价高昂的权衡。感谢链接wOxxOm