Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBScript继续循环以重命名文件_Vbscript_Infinite Loop_Wsh - Fatal编程技术网

VBScript继续循环以重命名文件

VBScript继续循环以重命名文件,vbscript,infinite-loop,wsh,Vbscript,Infinite Loop,Wsh,尝试创建一个不断循环的VBScript,直到找到特定文件并以分钟和秒将其重命名为其他扩展名: do Set fso = CreateObject("Scripting.FileSystemObject") Set myFile = fso.GetFile("C:\Users\user\Downloads\test.txt") If (fso.FileExists(myFile)) Then myFile.Move "C:\Users\user\Downloads\test.xml"

尝试创建一个不断循环的VBScript,直到找到特定文件并以分钟和秒将其重命名为其他扩展名:

do
Set fso = CreateObject("Scripting.FileSystemObject")
Set myFile = fso.GetFile("C:\Users\user\Downloads\test.txt")

If (fso.FileExists(myFile)) Then
     myFile.Move "C:\Users\user\Downloads\test.xml"
End If

WScript.Sleep 1000

loop

上述操作可以工作并重命名该文件,但循环时会出现“无法找到文件”错误。需要添加else语句,但很难做到这一点

在尝试实例化
文件
对象引用之前,请先尝试检查文件是否存在

Dim fso, myFile, source, dest

Set fso = CreateObject("Scripting.FileSystemObject")

Do
  source = "C:\Users\user\Downloads\test.txt"
  dest = "C:\Users\user\Downloads\test.xml"

  If fso.FileExists(source) Then
    Set myFile = fso.GetFile(source)
    Call myFile.Move(dest)
    Set myFile = Nothing
  End If
  WScript.Sleep 1000
Loop

Set fso = Nothing
*这是一个基于原始示例的伪编码示例

fso
实例化移到循环之外,以避免在每次迭代中重新实例化它

目前不确定循环的用途,但如果要长时间运行此循环,最好取消实例化任何引用,将它们设置为
Nothing
,以帮助优化脚本内存

还建议在测试循环时使用计数器限制迭代次数,并在超过计数时退出循环


因为您移动了文件,所以设置myFile=fso.GetFile(“C:\Users\user\Downloads\test.txt”)在第二次迭代中将失败。在尝试实例化
myFile
对象引用之前,应该先检查
.FileExists(完整文件路径)