保存后防止文件修改

问题描述

我正在寻找一种解决方案,使用户能够将文件保存到目录中,但之后无法对其进行修改。我知道这在 NTFS 权限下是不可能的,因为 Windows 处理文件的方式。我在保存文件时理解它的方式,Windows 将创建一个文件,然后打开它进行写入,但没有修改权限它不能这样做并给出错误

我的第二次尝试是编写一个脚本,将文件从可写文件夹移动到只读文件夹,然后在一段时间内没有写入文件,但到目前为止,这太复杂了。

>

这是我第一次尝试:

Get-ChildItem -Path "D:\DATA\data import" -Recurse | where {$_.Lastwritetime -lt (date).addhours(-4)} |  Move-Item -Destination "D:\DATA\data" 

这会将所有文件在 4 小时内未修改后放在相同的文件夹结构中,但如果文件夹已经存在而不是合并它,则会失败。它还会覆盖重复项,这是我不想要的。

第二次尝试是使用带有 -Container 和 -Recurse 的 copy-Item,但这也会覆盖文件,并且出于某种原因将所有文件复制到目标的根目录中,但也会将副本放入正确的文件夹中,如源。>

最后一次尝试:

$SourceDir = "D:\SCRIPTS\raw data"
$DestinationDir = "D:\SCRIPTS\raw data import"

#create dir if not exists (dont remove if exist)
New-Item -ItemType Directory -Path $DestinationDir -Force

#get list files destination dir 
$DestinationFiles=gci $DestinationDir -File

#loop on file source and create newname for copy while name exist already
gci $SourceDir -File | where {$_.Lastwritetime -lt (date).addminutes(-0)} |%{

$counter=0
$name=$_.Name
while ($name -in $DestinationFiles.Name)
{
  $counter++;
  $name="{0}_{1:d6}{2}" -f  $_.BaseName,$counter,$_.Extension

}


copy-Item -Path $_.FullName -Destination "$DestinationDir\$name" 

}

我将其修改为仅处理 4 小时未修改文件,但它不起作用。

然后我考虑使用 FreeFileSync 之类的东西,但它不会处理意外创建的重复项。

如果用户可以在创建后立即更改文件是可以的,但一段时间后文件应该变为只读以防止意外修改/删除。更确切地说,我会看到该文件在创建后变为只读。

我确定有一些软件可以处理此类问题以防止欺诈或其他什么,但我似乎找不到它。非常感谢任何帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)