0

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

我们有 20 台 PC 分布在美国各地。我可以远程进入每台 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 将成为我需要走的路。你们同意还是有更有效的解决方案?

4

2 回答 2

0

我很确定 powershell 不是您想要的。虽然我会推荐使用 powershell 代替批处理来处理您的有效负载,但它对于这些类型的计划任务来说并不理想。

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

  • 如果您可以忍受延迟,则可以经常运行批处理或 powershell 脚本来检查给定文件夹,并运行它找到的任何内容。
  • 如果您想要即时满足,Windows 服务是您的最佳选择,因为它会一直运行并且可以轻松地以这种方式处理侦听器。
于 2012-07-11T17:19:45.477 回答
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
    }
}

Run the above script with the "-install" switch and it will create a scheduled task to run once a day at 5:00am. If you'd like it to run more often check the syntax for schtasks to change that.

于 2012-07-11T17:21:13.460 回答