为什么即使我结束了 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
语法的习惯。正如您提出的可能解决方案一样。
它应该是一个简单的脚本,用于重命名当前目录中的文件。 我收到此错误
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
语法的习惯。正如您提出的可能解决方案一样。