我正在自动化我的一项工作,我打算在文件到达文件夹后立即压缩文件夹中的文件。
Win zip脚本已写入批处理文件,
你能帮助它如何通过Windows批处理文件或任何其他方式完成吗?
谢谢, 席德
我正在自动化我的一项工作,我打算在文件到达文件夹后立即压缩文件夹中的文件。
Win zip脚本已写入批处理文件,
你能帮助它如何通过Windows批处理文件或任何其他方式完成吗?
谢谢, 席德
这是一种使用 vbscript 的方法。将以下内容复制到文本文件中并将其重命名为 Folderwatcher.vbs
'FolderWatcher.vbs
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent " _
& "WITHIN 1 WHERE " _
& "TargetInstance ISA 'CIM_DataFile' and " _
& "TargetInstance.Drive='C:' and " _
& "TargetInstance.Path='\\scripts\\'")
Do
Set objEvent = colMonitoredEvents.NextEvent
Wscript.Echo objEvent.TargetInstance.FileName & "." & _
objEvent.TargetInstance.Extension & " Created"
wscript.sleep (10000) 'wait 10 seconds
'Run your Unzip code here
wscript.echo "Unzipping file now"
Loop
将 TargetInstance.Drive 和 Path 更改为接收文件的目录。如果文件比较大,可以增加wscript.sleep。每秒1000次。此外,如果您使用 Wscript 运行它,它将弹出创建和解压缩事件的窗口。如果您不希望这样,请使用 ' 注释掉这些行,或者只需在 cmd 窗口中使用
Cscript //nologo folderwatcher.vbs
您的 cmd 提示符位于 folderwatcher.vbs 的位置。正在运行的 cmd 窗口中的 Ctrl_C 将停止脚本。
在不知道文件以及它们如何应用于情况的情况下,您可以使用此 bat 文件来监视集合中的最后一个文件,当它到达时它将压缩它们。
如果文件正在被复制或通过 FTP 传输,那么您将需要像所示的 ping 命令一样添加延迟,以便在继续 ZIP 过程之前完成 last_file.exe。
@echo off
:loop
if exist "last_file.exe" goto :zip
ping -n 15 localhost >nul
goto :loop
:zip
rem 60 second delay
ping -n 60 localhost >nul
rem your script goes here.
您可以使用 Batch 执行此操作,但您必须整天打开 CMD 窗口以监视“X”文件夹中的文件更改,或者您可以添加计划的重复性任务以每 1 分钟启动一个批处理文件来搜索新文件在文件夹中......但那是一样的。你可以这样做,但批处理不是这样做的好方法。
考虑使用这个名为Directory Monitor的应用程序,它是免费的,可以满足您的需要:
http://www.brutaldev.com/page/Directory-Monitor
您也可以下载便携式版本。
这是步骤:
1-下载/安装应用程序
2- 打开它并单击“目录”以添加要监视的文件夹并选择要监视的文件更改(在本例中为新文件)。
3- 在同一个窗口中,您可以看到一个“执行”文本框,您可以在其中加载带有一些参数的 winzip,或者您可以启动批处理脚本来压缩文件,如下所示:
执行.bat
@Echo OFF
For /R "C:\MyNewfiles" %%# in ("*") Do (
If /I "%%~x#" NEQU ".zip" (
YourWinZIP Command to compress "%%a"
)
)
Exit
4- 如果要使用用户会话加载应用程序,请配置应用程序的设置。
我希望这有帮助。