我正在自动化我的一个工作,我打算在文件夹到达文件夹后立即压缩文件夹。
Win zip脚本已写入批处理文件
您可以通过Windows批处理文件或其他任何方式来帮助它吗?
谢谢, SID
答案 0 :(得分:1)
您可以使用Batch执行此操作但是您必须整天打开CMD窗口以监视“X”文件夹中的文件更改,或者您可以添加计划的重复任务以每1分钟启动一次批处理文件对于文件夹中的新文件...但是这是相同的。你可以这样做,但批处理不是这样做的好方法。
考虑使用这个名为目录监视器的应用程序,它是免费的,可以满足您的需求:
http://www.brutaldev.com/page/Directory-Monitor
您也可以下载便携版。
这是步骤:
1-下载/安装应用程序
2-打开它并单击“目录”以添加要监视的文件夹,并选择要监视的文件更改(在本例中为newfiles)。
3-在同一个窗口中,您可以看到一个“执行”文本框,您可以在其中加载带有一些参数的winzip,或者您可以启动批处理脚本来压缩这样的文件:
<强> Execute.bat 强>
@Echo OFF
For /R "C:\MyNewfiles" %%# in ("*") Do (
If /I "%%~x#" NEQU ".zip" (
YourWinZIP Command to compress "%%a"
)
)
Exit
4-如果要使用用户会话加载应用程序,请配置应用程序的设置。
我希望这会有所帮助。
答案 1 :(得分:1)
这是使用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将停止脚本。
答案 2 :(得分:1)
在不知道文件及其如何应用于这种情况的情况下,您可以使用此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.