我希望在重命名位于此处的.bat
文件夹中的文件后运行Sources
文件:
C:\Users\UserName\Videos\Gameplays\HeroesOfTheStorm\Sources\
.bat
文件位于同一Sources
文件夹中。
如果不手动双击.bat
文件,该怎么办呢?我希望在重命名Sources
文件夹中的文件后自动运行。
答案 0 :(得分:1)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set MonitoredEvents = WMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""C:\\\\Users\\\\David Candy""'")
Do
Wscript.Echo MonitoredEvents.NextEvent.TargetInstance.PartComponent
WshShell.Run "cmd /c ""C:\folder\batchfile.bat""", 1, false
Loop
请注意在目录名中使用4 \
,但在其他任何地方都没有。
它是一个vbs文件。它监视目录,如果重命名或创建该目录中的文件,它将运行命令。 WITHIN 10
表示每10秒测试一次。
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set MonitoredEvents = WMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""C:\\\\Users\\\\David Candy""'")
Do
WMIPath = Split(MonitoredEvents.NextEvent.TargetInstance.PartComponent, "=")(1)
FilePath = Replace(WMIPath, "\\", "\")
WshShell.Run "cmd /k echo File Renamed is " & FilePath & "&" & Filepath
Loop
答案 1 :(得分:0)
好的,您可以使用Windows工具以相当复杂的方式执行此操作。
首先,您需要启用审核。
有些术语可能有所不同,我的Windows不是英文的,所以我可能翻译错了。此外,您可能会进行一些测试,看看是否正确设置了所有内容。
另一个选项可能是设置一个小应用程序来监视文件夹并相应地运行bat。你可以用Java或其他语言做这件事。
答案 2 :(得分:0)
使用WatchDirectory()使用AutoHotkey可以轻松实现此目的 https://stackoverflow.com/a/30582696/883015