我试图通过插入bat文件中的powershell代码访问由另一个程序创建的日志文件,但它给了我以下错误(西班牙语环境):
Excepci¢al llamar a“OpenRead”con los argumentos“1”:“El proceso 没有puede obtener acceso al archivo 'C:\ Users \ g \ Documents \ BAT \ GrabI.log'polque est siendo utilizado en otro proceso。
英文:
使用“1”参数调用“OpenRead”的异常:“进程不能 访问文件'C:\ Users \ g \ Documents \ BAT \ GrabI.log',因为它是 被另一个进程使用。“
powershell代码是:
@PowerShell ^
$N = 200; ^
$fpath = 'Grab%1.log'; ^
$fs = [System.IO.File]::OpenRead($fpath); ^
$fs.Seek(-$N, 'End') ^| Out-Null; ^
$mystr = ''; ^
for ($i = 0; $i -lt $N; $i++) ^
{ ^
$mystr = ($mystr) + ([char[]]($fs.ReadByte())); ^
} ^
Write-Host $mystr > logtmp%1.log
%End PowerShell%
有没有办法打开允许我以读取模式访问文件,即使它正在使用?
答案 0 :(得分:0)
我想我找到了解决问题的方法。我没有打开文件,而是使用了Get-Content函数。像这样:
@PowerShell ^
$N = 200; ^
$mystr = Get-Content 'Grab%1.log' ^| Select-Object -last 1; ^
Write-Host $mystr.substring($mystr.length-$N,$N) > logtmp%1.log
%End PowerShell%
现在我没有任何问题。
答案 1 :(得分:0)
当文件很大时,最好使用参数 -tail 10
Get-Content $fpath -tail $N