0

我正在自动化我的一项工作,我打算在文件到达文件夹后立即压缩文件夹中的文件。

Win zip脚本已写入批处理文件,

你能帮助它如何通过Windows批处理文件或任何其他方式完成吗?

谢谢, 席德

4

3 回答 3

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 将停止脚本。

于 2013-04-23T12:33:49.640 回答
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.
于 2013-04-23T12:43:36.463 回答
1

您可以使用 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- 如果要使用用户会话加载应用程序,请配置应用程序的设置。

我希望这有帮助。

于 2013-04-23T11:56:06.563 回答