Vbscript 正在寻找一种方法,以便在文件夹命中10个文件时执行批处理文件
我正在寻找一种方法来监视一个文件夹,以便它在点击10个文件时执行一个批处理文件。如果它使用vbscript或其他类似的解决方案,那就太酷了 任何帮助都将不胜感激 谢谢请参考此问题: 注意他数文件的地方 我建议通过任务调度器执行任何类似的测试 简单例子 关于这个问题: 注意他数文件的地方 我建议通过任务调度器执行任何类似的测试 简单例子Vbscript 正在寻找一种方法,以便在文件夹命中10个文件时执行批处理文件,vbscript,batch-file,Vbscript,Batch File,我正在寻找一种方法来监视一个文件夹,以便它在点击10个文件时执行一个批处理文件。如果它使用vbscript或其他类似的解决方案,那就太酷了 任何帮助都将不胜感激 谢谢请参考此问题: 注意他数文件的地方 我建议通过任务调度器执行任何类似的测试 简单例子 关于这个问题: 注意他数文件的地方 我建议通过任务调度器执行任何类似的测试 简单例子 这方面的等效VBScript包括获取文件夹对象并检查其文件集合的计数。还可以检查文件夹的上次修改日期,以确定是否有更改或更改时间 循环遍历文件夹的.Files集合
这方面的等效VBScript包括获取文件夹对象并检查其文件集合的计数。还可以检查文件夹的上次修改日期,以确定是否有更改或更改时间 循环遍历文件夹的.Files集合可以让您单独检查每个文件的日期、大小等。由于这是文件对象的集合,因此可以直接执行任何文件对象方法,或者将文件对象传递给子例程进行处理。类似的.Subfolders集合将在此文件夹中创建的文件夹枚举为文件夹对象,以防您也希望监视这种情况 文件方法包括.Copy.Move.Delete.OpenAsTextStream和文件属性.DateLastModified.DateLastAccessed.Attributes和.Name是可更新的 请注意,.Name属性包含文件扩展名,如果更改名称,可能需要调用FSO.GetExtensionName()以获取该扩展名并将其附加到新名称,然后再将其分配回属性 子文件夹集合还有一个.Add()方法,可以创建新的子文件夹
.SubFolders.Add("NewFolderName")
文件夹对象没有使用文件对象的.OpenAsTextStream方法,而是使用.CreateTextFile()方法将打开的文本流对象返回到在该文件夹中创建的新文本文件。一个聪明的用法是创建一个文本流,子例程使用它将文件处理活动记录到日志文件中。或者直接读取文本文件并处理其内容
用于监视文件夹中10个文件的基本示例脚本
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
WatchFolder FSO.GetFolder("c:\watched")
WScript.Quit
Sub WatchFolder(oFldr)
While True
If oFldr.Files.Count >= 10 Then
WScript.Echo oFldr.Files.Count , "files in" , ofldr.Path , _
"Last Modified" , oFldr.DateLastModified
For Each oFile In oFldr.Files
WScript.Echo "File" , oFile.Name , _
"Last Modified" , oFile.DateLastModified , _
"Created" , oFile.DateCreated , _
"Size" , oFile.Size
' call subroutine to optionally process file
KillJunkFile oFile
Next
Exit Function
End If
WScript.Sleep 2000 ' wait 2 seconds before checking again.
Wend
End Sub
Sub KillJunkFile(oTestFile)
' delete any file named junk.txt
If LCase(oTestFile.Name) = "junk.txt" Then
oTestFile.Delete True ' true forces the delete
End If
End Sub
请注意,WatchFolder()函数将循环,直到至少有10个文件位于监视的文件夹中。您必须终止任务以停止它,或者添加一些终止逻辑来检查系统上的某些内容,这些内容可以告诉它退出循环。比如一个特殊命名的文件,一个注册表项,一个环境变量,等等。您还可以注释掉While Wend循环关键字,并让Windows Task Scheduler每小时运行一次脚本(如果需要足够长的时间才能显示足够的文件)。这方面的等效VBScript包括获取文件夹对象并检查其文件集合的计数。还可以检查文件夹的上次修改日期,以确定是否有更改或更改时间 循环遍历文件夹的.Files集合可以让您单独检查每个文件的日期、大小等。由于这是文件对象的集合,因此可以直接执行任何文件对象方法,或者将文件对象传递给子例程进行处理。类似的.Subfolders集合将在此文件夹中创建的文件夹枚举为文件夹对象,以防您也希望监视这种情况 文件方法包括.Copy.Move.Delete.OpenAsTextStream和文件属性.DateLastModified.DateLastAccessed.Attributes和.Name是可更新的 请注意,.Name属性包含文件扩展名,如果更改名称,可能需要调用FSO.GetExtensionName()以获取该扩展名并将其附加到新名称,然后再将其分配回属性 子文件夹集合还有一个.Add()方法,可以创建新的子文件夹
.SubFolders.Add("NewFolderName")
文件夹对象没有使用文件对象的.OpenAsTextStream方法,而是使用.CreateTextFile()方法将打开的文本流对象返回到在该文件夹中创建的新文本文件。一个聪明的用法是创建一个文本流,子例程使用它将文件处理活动记录到日志文件中。或者直接读取文本文件并处理其内容
用于监视文件夹中10个文件的基本示例脚本
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
WatchFolder FSO.GetFolder("c:\watched")
WScript.Quit
Sub WatchFolder(oFldr)
While True
If oFldr.Files.Count >= 10 Then
WScript.Echo oFldr.Files.Count , "files in" , ofldr.Path , _
"Last Modified" , oFldr.DateLastModified
For Each oFile In oFldr.Files
WScript.Echo "File" , oFile.Name , _
"Last Modified" , oFile.DateLastModified , _
"Created" , oFile.DateCreated , _
"Size" , oFile.Size
' call subroutine to optionally process file
KillJunkFile oFile
Next
Exit Function
End If
WScript.Sleep 2000 ' wait 2 seconds before checking again.
Wend
End Sub
Sub KillJunkFile(oTestFile)
' delete any file named junk.txt
If LCase(oTestFile.Name) = "junk.txt" Then
oTestFile.Delete True ' true forces the delete
End If
End Sub
请注意,WatchFolder()函数将循环,直到至少有10个文件位于监视的文件夹中。您必须终止任务以停止它,或者添加一些终止逻辑来检查系统上的某些内容,这些内容可以告诉它退出循环。比如一个特殊命名的文件,一个注册表项,一个环境变量,等等。您还可以注释掉While-Wend循环关键字,并让Windows任务计划程序每小时运行一次脚本,如果需要足够长的时间才能显示足够的文件。可能重复的可能重复的可能重复的可能重复的我正在查看他的解决方案-我看不出他在哪里调用另一个批处理文件,我遗漏了什么,还是他将他的批处理文件步骤放在这个批处理文件中?添加了一个简单的示例来帮助。我正在查看他的解决方案-我看不出他在哪里调用另一个批处理文件,是我遗漏了什么,还是他将他的批处理文件步骤放在这个批处理文件中?添加了一个简单的示例来帮助。