放入特定文件夹时执行批处理文件

时间:2012-07-11 16:56:32

标签: powershell batch-file actionlistener

当我将其放入我的一台Windows PC的特定文件夹中时,我需要执行批处理文件。

我们在美国有20台个人电脑。我可以远程访问每台PC并在本地PC上执行批处理文件,但这需要很长时间。

我也可以非常快速地将文件传输到每台PC中。如果我将批处理文件放在一个可以解决我问题的特定文件夹中,就可以执行它。

过去我听说过听众。 PC上的“东西”只是查看文件夹的内容。如果文件恰好存在于该文件夹中,则监听器执行“某事”。

这是一些有助于更好理解的伪代码:

\\Program watches the contents of C:\Folder1
If 
   file batchfile.bat exists in C:\Folder1
     then execute batchfile.bat and then delete batchfile.bat

Else
   continue watching C:\Folder1 for batchfile.bat

我正在挖掘SO,看起来PowerShell将成为我需要采取的道路。你们是否同意或者是否有更有效的解决方案?

2 个答案:

答案 0 :(得分:0)

我很确定powershell不是你想要的。虽然我建议使用powershell代替批量处理有效负载,但它并不适合这些类型的计划任务。

相反,我会推荐两条路径:

  • 如果您可以延迟,可以经常运行批处理或powershell脚本来检查给定的文件夹,并运行它找到的任何内容。
  • 如果你想要即时满足,Windows服务就是你要走的路,因为它会一直运行,并且能够以这种方式轻松处理听众。

答案 1 :(得分:0)

我是这样做的:

param([switch]$install)

$batchfile = "C:\Folder1\batchfile.bat"

if($install)
{
    invoke-expression ("schtasks -create -tn `"Job1`" -tr `"powershell -file '" + $myinvocation.mycommand.path + "'`" -sc DAILY -st 05:00 -rl HIGHEST -ru SYSTEM")
}
else
{
    if(test-path $batchfile)
    {
        cmd /c batchfile.bat
        remove-item $batchfile | out-null
    }
}

使用“-install”开关运行上述脚本,它将创建一个计划任务,每天凌晨5:00运行一次。如果您希望更频繁地运行,请检查schtasks的语法以更改它。