vbs - 800A0401 - Fim esperado da declaração

0

O morcego tem >>%vbs% echo oShellLink.IconLocation = "%1, 0" para produzir

oShellLink.IconLocation = ""C:\WINDOWS\NOTEPAD.exe", 0"'

onde% 1 é um caminho entre aspas

No entanto, a menos que eu remova as citações do caminho, como aqui:

oShellLink.IconLocation = "C:\WINDOWS\NOTEPAD.exe, 0"

Eu recebo o erro titular. O que você sugere? (Observe que% 1 é sempre fornecido com aspas)

Além disso, não estou muito familiarizado com o vbscript, por que não são necessárias citações próximas umas das outras?

...

Ainda não está claro por que o vbscript não pode interpretar essa atribuição, mas encontrou uma correção: % ~ 1 - expande% 1 e remove as aspas circundantes ("").

    
por user93200 07.08.2011 / 04:53

2 respostas

0

No VBS, você precisa escapar de caracteres de aspas duplas com um segundo caracter de aspas duplas.

Então mude

>>%vbs% echo oShellLink.IconLocation = "%1, 0"

para

>>%vbs% echo oShellLink.IconLocation = ""%1", 0"

Que no arquivo VBS lhe dará

oShellLink.IconLocation = """C:\WINDOWS\NOTEPAD.exe"", 0"

Que analisa "C:\WINDOWS\NOTEPAD.exe", 0 antes de ser atribuído a .IconLocation.

Editar (informações adicionais):

Basicamente, o erro é lançado se você colocar uma cotação não escapada na sequência (não literal).

Isso ocorre porque o analisador acha que o caractere de aspas é o marcador final da string, o que deixa o lixo (os caracteres restantes) após ele.

Portanto, como a citação de fechamento deve ser o marcador "fim da instrução", mas ela encontra caracteres após a citação de fechamento, há um erro porque é "Esperado" o "Fim da declaração".

O caminho funciona com e sem as aspas com escape por causa da maneira como .IconLocation analisa de forma inteligente a lista de argumentos que você está alimentando como uma única String.

    
por 07.08.2011 / 05:31
1

Seu problema é esta linha

oShellLink.IconLocation = ""C:\WINDOWS\NOTEPAD.exe", 0"

Você tem um "" que é o caractere de escape de aspas. Isso basicamente permite que você tenha uma string que contenha uma citação sem ter um erro de analisador. Assim:

" this is a string literal that contains a "" quote character"

armazena

this is a string literal that contains a " quote character

    
por 07.08.2011 / 05:01

Tags