Batch file 根据文件到达文件夹的条件运行批处理文件

Batch file 根据文件到达文件夹的条件运行批处理文件,batch-file,Batch File,我正在自动化我的一项工作,在这项工作中,我打算在文件到达文件夹后立即将其压缩到文件夹中 Win zip脚本已写入批处理文件中 您能否帮助我们如何通过windows批处理文件或任何其他方式完成此操作 谢谢, Sid您可以使用批处理,但是您必须全天打开CMD窗口以监视“X”文件夹中的文件更改,或者您可以添加一个计划的重复任务,每1分钟启动一个批处理文件,以搜索文件夹中的新文件。。。但这是一样的。您可以这样做,但批处理不是一种好方法 考虑使用名为目录监视器的应用程序,该应用程序是免费的,可以执行您需要

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

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

您能否帮助我们如何通过windows批处理文件或任何其他方式完成此操作

谢谢,
Sid

您可以使用批处理,但是您必须全天打开CMD窗口以监视“X”文件夹中的文件更改,或者您可以添加一个计划的重复任务,每1分钟启动一个批处理文件,以搜索文件夹中的新文件。。。但这是一样的。您可以这样做,但批处理不是一种好方法

考虑使用名为目录监视器的应用程序,该应用程序是免费的,可以执行您需要的操作:

你也可以下载一个便携版本

以下是步骤:

1-下载/安装应用程序

2-打开它并在“目录”中单击以添加要监视的文件夹,并选择要监视的文件更改(在本例中为新文件)

3-在同一窗口中,您可以看到一个“执行”文本框,您可以在其中加载带有一些参数的winzip,或者启动一个批处理脚本来压缩文件,如下所示:

执行.bat

4-如果要使用用户会话加载应用程序,请配置应用程序的设置


我希望这会有所帮助。

你可以用批处理来完成,但是你必须整天打开CMD窗口来监视“X”文件夹中的文件更改,或者你可以添加一个计划的重复任务,每1分钟启动一个批处理文件,搜索文件夹中的新文件。。。但这是一样的。您可以这样做,但批处理不是一种好方法

考虑使用名为目录监视器的应用程序,该应用程序是免费的,可以执行您需要的操作:

你也可以下载一个便携版本

以下是步骤:

1-下载/安装应用程序

2-打开它并在“目录”中单击以添加要监视的文件夹,并选择要监视的文件更改(在本例中为新文件)

3-在同一窗口中,您可以看到一个“执行”文本框,您可以在其中加载带有一些参数的winzip,或者启动一个批处理脚本来压缩文件,如下所示:

执行.bat

4-如果要使用用户会话加载应用程序,请配置应用程序的设置


我希望这能有所帮助。

这里有一种使用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和路径。如果文件较大,可以增加wscript.sleep。每秒1000次。此外,如果您使用Wscript运行此命令,它将弹出创建和解压缩事件的窗口。如果您不想这样做,请使用“注释掉这些行,或者在cmd窗口中使用

Cscript //nologo folderwatcher.vbs

其中,cmd提示符位于folderwatcher.vbs的位置。在运行它的cmd窗口中的Ctrl\u C将停止脚本

下面是一种使用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和路径。如果文件较大,可以增加wscript.sleep。每秒1000次。此外,如果您使用Wscript运行此命令,它将弹出创建和解压缩事件的窗口。如果您不想这样做,请使用“注释掉这些行,或者在cmd窗口中使用

Cscript //nologo folderwatcher.vbs

其中,cmd提示符位于folderwatcher.vbs的位置。在运行它的cmd窗口中的Ctrl\u C将停止脚本

在不知道文件及其应用情况的情况下,您可以使用此bat文件来监视集合中的最后一个文件,当它到达时,它会将其压缩

如果文件正在被复制或FTP,则需要添加一个延迟,如所示的ping命令,以便在继续ZIP过程之前完成最后一个_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.

在不知道文件以及它们如何应用于情况的情况下,您可以使用此bat文件来监视集合中的最后一个文件,当它到达时,它会将它们压缩

如果文件正在被复制或FTP,则需要添加一个延迟,如所示的ping命令,以便在继续ZIP过程之前完成最后一个_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.