是否可以在Windows中自动运行bat文件保存


1

每次我更改文件时,我都需要手动将其复制到另一个文件夹,以便更新版本存在。我知道 mklink,但这在我的情况下是不可行的。

有没有办法将bat文件挂钩到 save Windows中的文件事件?因为如果可能的话,我可以创建一个bat文件来自动复制文件。如果没有,我可能有其他选择,不包括 mklink


2
听起来你真正想要的是一些文件同步软件。 en.wikipedia.org/wiki/...
Mokubai

1
为什么不把bat文件放到计划任务中并每分钟运行一次?有办法监控文件更改但需要在后台运行其他软件,低技术计划任务似乎很适合这里。
Chris.C

使用xcopy或robocopy,让蝙蝠重复运行。 superuser.com/questions/308277/...
Chris.C

@ Chris.C,我需要它。这样,我每次更改文件时都应等待1分钟,否则,我应该找到一种方法每5秒复制一次文件,这会使资源使用成为一场噩梦(可能)。
Saeed Neamati

Answers:


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,启动项目或启动它的计划任务。


0

我建议使用 FreeFileSync 保持该文件同步。 FreeFileSync有一个名为RealtimeSync的辅助工具,每次检测到给定文件夹中的更改时都会触发同步任务。您只需为该文件创建同步任务,然后使用该任务运行RealtimeSync,并且每次修改时都将“自动”复制该任务。

有关完整的教程,请参阅 如何在Windows中使用FreeFileSync同步文件和文件夹

重要注意事项:尽管FreeFileSync是开源的,并且是根据GPL许可的,但它与OpenCandy PUP / PUA捆绑在一起,因此要么在禁用网络连接的情况下安装它,要么确保取消选中crapware安装。此外,您只需使用7zip或PeaZip解压缩安装程序,然后无需安装即可运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.