vbs - 800A0401 - Beyan Sonu Beklenen


0

Yarasa >>%vbs% echo oShellLink.IconLocation = "%1, 0"üretmek zorunda

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

% 1 alıntı bir yol

Ancak, alıntıları buradaki yoldan kaldırmadığım sürece:

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

Titüler hatayı alıyorum. Sen ne önerirsin? (% 1'in her zaman tırnak işaretleri ile sağlandığını unutmayın)

Ayrıca, vbscript ile pek aşina değilim, neden yan yana tırnak gerektirmiyor?

...

Vbscript'in bu ödevi neden yorumlayamadığını hala anlayamadı, ancak bir düzeltme buldu:% ~ 1 -% 1 öğesini genişletiyor ve çevresindeki tırnak işaretlerini ("") kaldırıyor.

Yanıtlar:


0

VBS'de ikinci bir çift tırnak karakteri ile çift tırnak karakterinden kaçmanız gerekir.

Öyleyse değiş

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

için

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

Hangi VBS dosyasında size verecek

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

Hangi "C:\WINDOWS\NOTEPAD.exe", 0.IconLocation atanmadan önce ayrıştırır .

Düzenle (ek bilgi):

Temel olarak, (değişmez) dizgede kaçış olmayan bir alıntı yaparsanız hata atılır.

Bunun nedeni, ayrıştırıcının onu (alıntı karakteri), sonradan (kalan karakterleri) çöp bırakan dizenin son işaretçisi olduğunu düşünmesidir.

Dolayısıyla, kapanış teklifinin 'ifadenin sonu' işaretçisi olması gerektiği, ancak bu kapanış teklifinden sonra karakter bulduğu için, bir hata var çünkü "Beklenen" "İfadenin Sonu" idi.

Yol, kaçış tırnak işaretleri ile ya da bunlar olmadan çalışır çünkü .IconLocation, onu tek bir Dize olarak beslediğiniz değişkenlerin listesini akıllıca ayrıştırır.


Bunun nasıl çalıştığını anlıyorum (lütfen gerekirse düzeltin): ödevi görür, böylece rhs içindeki çift tırnak dışına çıkarır. Ardından yan yana olan herhangi bir ikili, değişmez bir ikili alıntıya dönüştürülür. Fakat eğer bir şekilde değişmezlerse, bir hataya neden olurlar.
user93200

Nasıl ayrıştırıldığına dair açıklamanız doğru. Bu hatanın neden bir düzenleme düzenlemesinde (oda nedeniyle) neden biraz ortaya çıktığını açıklamaya çalışacağım.
Ƭᴇcʜιᴇ007

1

Senin sorunun bu satır

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

Alıntı kaçış karakteri olan bir "" karakterine sahipsiniz. Bu temelde, ayrıştırıcı hatası olmadan bir alıntı içeren bir dize olmasını sağlar. Bunun gibi:

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

mağazalar

Bu bir "alıntı karakteri içeren bir dize değişmezidir.


Öyleyse,% 1 'den alıntıları gerekmiyorsa nasıl çıkarırım?
user93200
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.