每次我更改文件时,我都需要手动将其复制到另一个文件夹,以便更新的版本存在于该文件夹中。我知道mklink
,但对我来说这是不可行的。
有没有办法将 bat 文件挂接到save
Windows 中的文件事件?因为如果可能的话,我可以创建一个 bat 文件来自动复制文件。如果没有,除了 之外,我还有什么其他选择mklink
。
答案1
您可以在 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,启动项或计划任务就可以启动它。
答案2
我建议使用免费文件同步使该文件保持同步。FreeFileSync 有一个名为 RealtimeSync 的附加工具,每次检测到给定文件夹中的更改时,它都会触发同步任务。您只需为该文件创建一个同步任务,然后使用该任务运行 RealtimeSync,每次修改时它都会“自动”复制。
完整教程请参阅如何在 Windows 中使用 FreeFileSync 同步文件和文件夹
重要脚注:尽管 FreeFileSync 是开源软件,并且根据 GPL 获得许可,但它与 OpenCandy PUP/PUA 捆绑在一起,因此请在禁用网络连接的情况下安装它,或者确保取消选中垃圾软件安装选项。此外,您也可以使用 7zip 或 PeaZip 解压安装程序,然后直接运行它而无需安装。