PowerShell 打开一个只写文件(用于锁定)并执行 'touch' 以更改文件的上次修改日期

标签 powershell

我正在尝试将文本文件用于锁定机制。

想法是,一旦 powershell 脚本运行并持有文件句柄,其他进程将无法打开它,将等到它释放。

$file = [System.io.File]::Open('D:\file.lock', 'Open', 'Read', 'None')
$reader = New-Object System.IO.StreamReader($file)
$text = $reader.ReadToEnd()
$text | Out-File $file
$reader.Close()
$file.Close()

锁定效果很好,但我希望一旦脚本释放文件,它应该执行“触摸”操作,以便更改文件的上次修改日期

我的问题代码是$text | Out-File $file 因为它没有做任何事情

我怎样才能保存文件,或者做一个“触摸”

最佳答案

这可能就像手动设置最后写入时间一样简单:

(ls $file).LastWriteTime=(get-date)

编辑: 你可以使用它(但当我们打开它进行写入时无法读取文件内容)

$file = [System.io.File]::Open('c:\temp\test.txt', 'append', 'Write', 'None')
$enc = [system.Text.Encoding]::UTF8
$msg = "This is a test" 
$data = $enc.GetBytes($msg) 
$file.write($data,0,$data.length)
$file.Close()

关于PowerShell 打开一个只写文件(用于锁定)并执行 'touch' 以更改文件的上次修改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156715/

相关文章:

json - 无法在Windows终端中更改Face字体

winforms - 是否可以有一个窗口来插入由 powershell 制作的数据?

c# - 远程运行 powershell 命令时出错

powershell - 需要用于仅包含 Style.CSS 的特定文件夹的 ZIP 提取的 Powershell 脚本?

powershell - 如何覆盖powershell全局模块功能?

powershell - 使用Powershell跨域访问远程计算机?

regex - 修剪或替换 PowerShell 字符串变量

powershell - 系统找不到指定的文件 - 任务计划程序

git - Powershell 在 TortoiseGit Hook 中不返回任何内容

sql - 如何从数组中删除空间 (powershell)