【发布时间】:2020-07-22 03:24:19
【问题描述】:
我试图通过插入 bat 文件中的 powershell 代码访问另一个程序创建的日志文件,但它给了我以下错误(西班牙环境):
Excepci¢n al llamar a "OpenRead" con los argumentos "1": "El proceso no puede obtener acceso al archivo 'C:\Users\g\Documents\BAT\GrabI.log' porque est siendo utilizado en otro 过程。
英文:
使用“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%
有没有什么方法可以让我以读取模式访问文件,即使它正在使用中?
【问题讨论】:
-
您好,也许您可以找到解决方案here。
-
如果其他程序将文件作为“独占”打开,则没有。
-
谢谢,Bill_Stewart,我正在尝试使用 powershell 从日志中捕获最后的 200 个字符,因为当我尝试通过“输入 Grab%1.log|find “writing”” 在 bat文件我只能从日志中读取 4096 第一个字符,但是当日志没有到达它们时,我没有问题。我认为,如果我可以键入文件,则意味着其他程序尚未将文件打开为“独占”。我错了吗?
-
谢谢,苏打柳。我已阅读您的链接中所说的内容,并尝试了那里的一些建议,但目前我还没有解决我的问题。
-
命令
inuse(资源包)可以帮助你。注意:它需要重新启动。
标签: powershell batch-file