每次我更改文件时,我都需要手动将其复制到另一个文件夹,以便更新版本存在。我知道 mklink
,但这在我的情况下是不可行的。
有没有办法将bat文件挂钩到 save
Windows中的文件事件?因为如果可能的话,我可以创建一个bat文件来自动复制文件。如果没有,我可能有其他选择,不包括 mklink
。
每次我更改文件时,我都需要手动将其复制到另一个文件夹,以便更新版本存在。我知道 mklink
,但这在我的情况下是不可行的。
有没有办法将bat文件挂钩到 save
Windows中的文件事件?因为如果可能的话,我可以创建一个bat文件来自动复制文件。如果没有,我可能有其他选择,不包括 mklink
。
Answers:
你可以在powershell中做到这一点。
首先从这里开始抓取FileSystemWatcher: https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b
你不需要所有这些 - 我已经把它修剪到了这个,这应该适合你:
$destination = "\\Location\file\should\go"
$folder = 'c:\scripts\test' # Enter the root path you want to monitor.
$filter = '*.*' # Enter filename here.
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action
{
$name = $Event.SourceEventArgs.Name
Copy-Item $name $destination -force
}
这应该仅在检测到文件更改时触发。
我没有对此进行测试,但它应该足够接近你。
每次启动机器时都需要运行这一部分PowerShell,启动项目或启动它的计划任务。
我建议使用 FreeFileSync 保持该文件同步。 FreeFileSync有一个名为RealtimeSync的辅助工具,每次检测到给定文件夹中的更改时都会触发同步任务。您只需为该文件创建同步任务,然后使用该任务运行RealtimeSync,并且每次修改时都将“自动”复制该任务。
有关完整的教程,请参阅 如何在Windows中使用FreeFileSync同步文件和文件夹
重要注意事项:尽管FreeFileSync是开源的,并且是根据GPL许可的,但它与OpenCandy PUP / PUA捆绑在一起,因此要么在禁用网络连接的情况下安装它,要么确保取消选中crapware安装。此外,您只需使用7zip或PeaZip解压缩安装程序,然后无需安装即可运行。