为什么即使我结束了 if 语句,我仍会收到 "Expected Statement" 错误?

Why do I get "Expected Statement" error even though I ended my if statement?

它应该是一个简单的脚本,用于重命名当前目录中的文件。 我收到此错误

Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder(".\")

For Each File In Folder.Files
    sNewFile = File.Name
    sNewFile = Replace(sNewFile,"apt sth-sth2-sth3","apt curr1_curr2_curr3")
    if (sNewFile<>File.Name) then File.Move(File.ParentFolder+"\"+sNewFile)
    end if
Next

根据您的评论,我的假设是正确的。将它添加到这里是为了完整性。

if语句的内容必须独占一行,像这样:

if (sNewFile<>File.Name) then 
    File.Move(File.ParentFolder+"\"+sNewFile)
end if

扩展正确答案:If 语句的 BASIC 语法可以变化如下:

1) 如果使用 单个 语句:

If <condition> Then <statement>

例如

If (sNewFile<>File.Name) Then File.Move(File.ParentFolder+"\"+sNewFile)

注意缺少的结尾 End If。并且整个结构必须在 one 行。

2) 如果有 一个或多个 语句:

If <condition> Then
   <statement>
   [<statement>]
   [...]
   [<statement>]
End If

例如

If (sNewFile<>File.Name) Then 
    File.Move(File.ParentFolder+"\"+sNewFile)
End If

因为后者也适用于只有一个语句的情况,所以我养成了总是使用 If/End IF 语法的习惯。正如您提出的可能解决方案一样。