Ошибка компиляции microsoft vbscript недопустимый знак

I get a compilation error when I try to run the following vbs code from a command prompt in Windows 7.

Option Explicit
Dim objNetwork, strRemotePath1, strRemotePath2, strRemotePath3
Dim strDriveLetter1, strDriveLetter2, strDriveLetter3, strUserName

Set objNetwork = CreateObject("WScript.Network")
strUserName = objNetwork.UserName 

strDriveLetter1 = "H:"
strDriveLetter2 = "P:"
strDriveLetter3 = "S:"
strRemotePath1 = "\testpublicusers" & strUserName & ""
strRemotePath2 = "\testpublicgroups"
strRemotePath3 = "\testscans"


'Section which maps two drives, M: and P: and S:
objNetwork.MapNetworkDrive strDriveLetter1, strRemotePath1
objNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2
objNetwork.MapNetworkDrive strDriveLetter3, strRemotePath3

'Extra code just to add a message box
WScript.Echo "Map drives " & strDriveLetter1 & " & " & strDriveLetter2 & " & " & strDriveLetter3

Wscript.Quit

It says the issue is with Line 1 Char 1. Any ideas?

12 / 11 / 5

Регистрация: 21.08.2012

Сообщений: 226

1

15.01.2014, 11:45. Показов 23237. Ответов 18


Студворк — интернет-сервис помощи студентам

Доброго времени суток.

Отдельной темы по VBScript не нашёл, поэтому пишу сюда. А вообще тема на стыке 4-х инструментов — VBScript, 1С 8.2, xslt и DIRECTUM

Из функции VBScript надо запустить функцию 1С которая называется по русски и находится в модуле с русским названием. Назвать функцию по английски не проблема. Но функция находится в модуле, который называется по русски. А в модуле куча функций которые вызываются в 1С и в DIRECTUM в самых разных местах. В общем переименование модуля грозит большой трудоёмкостью и скрытыми ошибками…

Собственно вопрос:
Может какими-нибудь настройками можно заставить понимать VBScript русские названия модулей?

Спасибо.

Предполагаемая среда использования (все русские):
— Windows 7;
— Windows 8;
— Windows Server 2012;



0



Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

15.01.2014, 13:14

2

Цитата
Сообщение от СергейР
Посмотреть сообщение

Может какими-нибудь настройками можно заставить понимать VBScript русские названия модулей?

Сохраняйте файл VBScript в Юникоде. Например, в UTF-16.
Должно помочь (если я правильно понял задачу).



0



12 / 11 / 5

Регистрация: 21.08.2012

Сообщений: 226

15.01.2014, 13:46

 [ТС]

3

Цитата
Сообщение от Убежденный
Посмотреть сообщение

Сохраняйте файл VBScript в Юникоде. Например, в UTF-16.
Должно помочь (если я правильно понял задачу).

Мда… Функция VBScript в xslt-шаблоне. Шаблон формируется программно при выполнении. Попробую разобраться в какой кодировке всё это происходит…



0



Эксперт WindowsАвтор FAQ

18046 / 7649 / 891

Регистрация: 25.12.2011

Сообщений: 11,428

Записей в блоге: 17

16.01.2014, 01:20

4

Убежденный, VBScript не поддерживает Юникод-сурс.
СергейР, но что мешает сохранить код VBS в нужной кодировке (1251 или 866), к примеру.
Перекодируйте файл шаблона.



1



Убежденный

Ушел с форума

Эксперт С++

16459 / 7423 / 1186

Регистрация: 02.05.2013

Сообщений: 11,617

Записей в блоге: 1

16.01.2014, 09:39

5

Цитата
Сообщение от Dragokas
Посмотреть сообщение

Убежденный, VBScript не поддерживает Юникод-сурс.

Вынужден не согласиться. Набираю в текстовом редакторе:

Visual Basic
1
MsgBox("Привет!")

Сохраняю в UTF-16LE (+BOM) с расширением VBS, запускаю — все работает,
русские буквы нормально отображаются, проверил на английской Vista, например.

Добавлено через 18 минут
Хотя вот у меня есть COM-объект со свойством «версия».
Из JScript оно нормально вызывается, а из VBScript пишет «invalid char»,
сохранение в UTF-16 не помогает, так что Dragokas прав.



0



12 / 11 / 5

Регистрация: 21.08.2012

Сообщений: 226

16.01.2014, 16:55

 [ТС]

6

С сообщением на русском проблем нету (в заголовках xslt и в xml кодировка стоит utf-8).
Проблема с обращением к модулям и функциям, имеющим русские названия.

Начну с простого — создам vbs-скрипты в различных кодировках с русскими названиями функций и проверю.

Добавлено через 6 часов 36 минут
Похоже VBScript принципиально не понимает русские названия функций. Сделал следующее:
В FAR’е написал vbs-скрипты и сохранил в следующих кодировках: ANSI, OEM, UTF-8 & UTF-16.
Запускал командой: C:WindowsSysWOW64wscript.exe TestRus_****.vbs

Для всех скриптов выходила одна и та же ошибка, указывающая на строку с русским названием модуля:
Ошибка: Недопустимый знак
Код: 800A0408
Источник: Ошибка компиляции Microsoft VBScript

Если вызывать аналогичную функцию с английским названием в английском модуле то вызов функции проходит корректно (возвращается текстовая строка на русском и вставляется в текстовый файл).

P.S. Попутно нашёл аналогичную тему 7-летней давности: Мне на VBS нужно написать скрипт для работы с 1С
Ничего не изменилось похоже…



0



1744 / 349 / 41

Регистрация: 15.10.2012

Сообщений: 548

17.01.2014, 22:59

7

Цитата
Сообщение от СергейР
Посмотреть сообщение

Ничего не изменилось похоже…

И не изменится. M$ давно уже забили на WSH. Старая игрушка, уже неинтересная



1



12 / 17 / 2

Регистрация: 02.11.2015

Сообщений: 222

01.04.2019, 15:18

8

Цитата
Сообщение от Smitis
Посмотреть сообщение

И не изменится. M$ давно уже забили на WSH. Старая игрушка, уже неинтересная

и что теперь вместо неё?



0



5853 / 2564 / 1008

Регистрация: 06.06.2017

Сообщений: 8,751

01.04.2019, 16:56

9

Цитата
Сообщение от Eskander88
Посмотреть сообщение

и что теперь вместо неё?

Не вместо, а вдобавок. PS — разделом выше.
Про игрушку товарищ, конечно, загнул, а интерес был потерян у MS, пользователям WSH всё ещё по душе.



0



12 / 17 / 2

Регистрация: 02.11.2015

Сообщений: 222

01.04.2019, 17:39

10

Цитата
Сообщение от FlasherX
Посмотреть сообщение

PS — разделом выше

вы имели ввиду Power Shell?



0



5853 / 2564 / 1008

Регистрация: 06.06.2017

Сообщений: 8,751

01.04.2019, 18:12

11

После указания на расположение ещё остались сомнения?



0



12 / 17 / 2

Регистрация: 02.11.2015

Сообщений: 222

01.04.2019, 19:38

12

… не поймите превратно.. просто указание на «раздел выше» по ключу «PS» может давать достаточно широкий простор для прокладки курса, в зависимости от понимания той или иной плоскости



0



5853 / 2564 / 1008

Регистрация: 06.06.2017

Сообщений: 8,751

01.04.2019, 21:24

13

Цитата
Сообщение от Eskander88
Посмотреть сообщение

может давать достаточно широкий простор для прокладки курса

Ну-ка, порадуйте меня. Начинаю загибать пальцы..



0



12 / 17 / 2

Регистрация: 02.11.2015

Сообщений: 222

01.04.2019, 21:30

14

это уже будет флуд на смахивать.. проще наверное сказать, что вы имели ввиду.. PS => Post Scriptum, Power Shell, PhotoShop, Play Station, Process State (из Linux), …



0



5853 / 2564 / 1008

Регистрация: 06.06.2017

Сообщений: 8,751

01.04.2019, 21:36

15

Не выбивайтесь из контекста «раздел выше»…



0



12 / 17 / 2

Регистрация: 02.11.2015

Сообщений: 222

01.04.2019, 21:49

16

выше, ниже, влево, вправо.. выше над, или выше из.. вы спросили, я дал конкретный ответ..

человек говорит JS, а может подразумевать: ECMA Script или JScript

можно сказать VB, а подразумевать: VBA, VBS

сказать RGB, а спутать с HEX

для этого и уточняется…

если пояснить нечего или не хочется, то чего уж там



0



5853 / 2564 / 1008

Регистрация: 06.06.2017

Сообщений: 8,751

01.04.2019, 22:48

17

Ещё раз повторяю — ответ дан вне контекста. Началась банальная игра слов с уходом от «разделом выше».
А, простите, давать дополнительные пояснения после «остались сомнения» тут уже совсем сверх меры…
Включайте голову.



0



1744 / 349 / 41

Регистрация: 15.10.2012

Сообщений: 548

07.04.2019, 02:26

18

Цитата
Сообщение от FlasherX
Посмотреть сообщение

Про игрушку товарищ, конечно, загнул, а интерес был потерян у MS, пользователям WSH всё ещё по душе.

Про «игрушку» имелось ввиду «MS потеряло интерес к своей игрушке»



0



5853 / 2564 / 1008

Регистрация: 06.06.2017

Сообщений: 8,751

07.04.2019, 12:29

19

Smitis, то бишь появилась новая? Понятно. )



0



Code  Error 800A0408 – Invalid Character

Troubleshooting Code 800A0408 – Invalid Character

Introduction to Code 800A0408

This error code, 800A0408 occurs when you execute a VBScript.  A wild guess a problem with an apostrophe, possibly in a ‘REM statement.Code  Error 800A0408 - Invalid Character

The Symptoms You Get

The script does not execute as you had hoped. Instead you get a WSH message box like this picture:

The Cause of error 800A0408

Your VBScript contains an illegal character, often at the beginning of a line.  It can happen if you copy the script from word, then paste into notepad.  For example, to ‘Rem out a line we need the apostrophe, which is ASCII character 39; however if you paste from word you may get ASCII 96 (Grave accent).

Note the clue Source: Microsoft VBScript compilation error, this means a syntax error in your script.

The Solutions

Check the punctuation marks in your VBScript, particularly look out for apostrophes and commas that do not display correctly.  The reference to Line: 1 Char 1, means that the very first symbol that is probably wrong.

  ‡

Example 1 of error code 800A0408 – Invalid Character

Note: The error  Rem VBScript

It should be ‘ Rem VBScript

  Rem VBScript
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Set WshNetwork = WScript.CreateObject(«WScript.Network»)
Set AllDrives = WshNetwork.EnumNetworkDrives()

DriveLetter = «N:» ‘must be capitalized
RemotePath = «\alanhome»

AlreadyConnected = False
For i = 0 To AllDrives.Count – 1 Step 2
If AllDrives.Item(i) = DriveLetter Then AlreadyConnected = True
Next

If AlreadyConnected = False then
WShNetwork.MapNetworkDrive DriveLetter, RemotePath
WshShell.PopUp «Drive » & DriveLetter & » connected successfully.»

Else
WShNetwork.RemoveNetworkDrive DriveLetter
WshShell.PopUp «Drive » & DriveLetter & » disconnected.»
End if

»

Example 2 Code 800A0408 – Invalid Character

I include this screen shot just to emphasise that Char: number need not be one.  Thus Char: 20, or what ever your char number is, becomes a big clue in tracing obscure characters that may have sneaked into your script.

Code 800A0408 - Invalid Character

See More Windows Update Error Codes 8004 Series

• Error 800A101A8 Object Required   •Error 800A0046   •Error 800A10AD   •Error 800A000D

• Error 80048820   •Error 800A0401   •Review of SolarWinds Permissions Monitor

• Error 80040E14   • Error 800A03EA   • Error 800A0408   • Error 800A03EE

Solarwinds Free WMI MonitorGuy Recommends: WMI Monitor and It’s Free!

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft operating systems.  Fortunately, SolarWinds have created the WMI Monitor so that you can examine these gems of performance information for free.  Take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor


Do you need additional help?

  • For interpreting the WSH messages check Diagnose 800 errors.
  • For general advice try my 7 Troubleshooting techniques.
  • See master list of 0800 errors.
  • Codes beginning 08004…
  • Codes beginning 08005…
  • Codes beginning 08007…
  • Codes beginning 0800A…

Give something back?

Would you like to help others?  If you have a good example of this error, then please email me, I will publish it with a credit to you:

If you like this page then please share it with your friends


About The Author

Guy Recommends: WMI Monitor and It’s Free!

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft operating systems.  Fortunately, SolarWinds have created the WMI Monitor so that you can examine these gems of performance information for free.  Take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor


Do you need additional help?

  • For interpreting the WSH messages check Diagnose 800 errors.
  • For general advice try my 7 Troubleshooting techniques.
  • See master list of 0800 errors.
  • Codes beginning 08004…
  • Codes beginning 08005…
  • Codes beginning 08007…
  • Codes beginning 0800A…

Give something back?

Would you like to help others?  If you have a good example of this error, then please email me, I will publish it with a credit to you:

If you like this page then please share it with your friends


About The Author

Guy Thomas

Troubleshooting Code 800A0408 – Invalid Character

Introduction to Code 800A0408

This error code, 800A0408 occurs when you execute a VBScript.  A wild guess a problem with an apostrophe, possibly in a ‘REM statement.Code Error 800A0408 - Invalid Character

The Symptoms You Get

The script does not execute as you had hoped. Instead you get a WSH message box like this picture:

The Cause of error 800A0408

Your VBScript contains an illegal character, often at the beginning of a line.  It can happen if you copy the script from word, then paste into notepad.  For example, to ‘Rem out a line we need the apostrophe, which is ASCII character 39; however if you paste from word you may get ASCII 96 (Grave accent).

Note the clue Source: Microsoft VBScript compilation error, this means a syntax error in your script.

The Solutions

Check the punctuation marks in your VBScript, particularly look out for apostrophes and commas that do not display correctly.  The reference to Line: 1 Char 1, means that the very first symbol that is probably wrong.

  ‡

Example 1 of error code 800A0408 – Invalid Character

Note: The error  Rem VBScript

It should be ‘ Rem VBScript

  Rem VBScript
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Set WshNetwork = WScript.CreateObject(«WScript.Network»)
Set AllDrives = WshNetwork.EnumNetworkDrives()

DriveLetter = «N:» ‘must be capitalized
RemotePath = «alanhome»

AlreadyConnected = False
For i = 0 To AllDrives.Count – 1 Step 2
If AllDrives.Item(i) = DriveLetter Then AlreadyConnected = True
Next

If AlreadyConnected = False then
WShNetwork.MapNetworkDrive DriveLetter, RemotePath
WshShell.PopUp «Drive » & DriveLetter & » connected successfully.»

Else
WShNetwork.RemoveNetworkDrive DriveLetter
WshShell.PopUp «Drive » & DriveLetter & » disconnected.»
End if

»

Example 2 Code 800A0408 – Invalid Character

I include this screen shot just to emphasise that Char: number need not be one.  Thus Char: 20, or what ever your char number is, becomes a big clue in tracing obscure characters that may have sneaked into your script.

Code 800A0408 - Invalid Character

See More Windows Update Error Codes 8004 Series

• Error 800A101A8 Object Required   •Error 800A0046   •Error 800A10AD   •Error 800A000D

• Error 80048820   •Error 800A0401   •Review of SolarWinds Permissions Monitor

• Error 80040E14   • Error 800A03EA   • Error 800A0408   • Error 800A03EE

Solarwinds Free WMI MonitorGuy Recommends: WMI Monitor and It’s Free!

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft operating systems.  Fortunately, SolarWinds have created the WMI Monitor so that you can examine these gems of performance information for free.  Take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor


Do you need additional help?

  • For interpreting the WSH messages check Diagnose 800 errors.
  • For general advice try my 7 Troubleshooting techniques.
  • See master list of 0800 errors.
  • Codes beginning 08004…
  • Codes beginning 08005…
  • Codes beginning 08007…
  • Codes beginning 0800A…

Give something back?

Would you like to help others?  If you have a good example of this error, then please email me, I will publish it with a credit to you:

If you like this page then please share it with your friends


Я получаю ошибку компиляции, когда пытаюсь запустить следующий код vbs из командной строки в Windows 7.

Option Explicit
Dim objNetwork, strRemotePath1, strRemotePath2, strRemotePath3
Dim strDriveLetter1, strDriveLetter2, strDriveLetter3, strUserName

Set objNetwork = CreateObject("WScript.Network")
strUserName = objNetwork.UserName 

strDriveLetter1 = "H:"
strDriveLetter2 = "P:"
strDriveLetter3 = "S:"
strRemotePath1 = "testpublicusers" & strUserName & ""
strRemotePath2 = "testpublicgroups"
strRemotePath3 = "testscans"


'Section which maps two drives, M: and P: and S:
objNetwork.MapNetworkDrive strDriveLetter1, strRemotePath1
objNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2
objNetwork.MapNetworkDrive strDriveLetter3, strRemotePath3

'Extra code just to add a message box
WScript.Echo "Map drives " & strDriveLetter1 & " & " & strDriveLetter2 & " & " & strDriveLetter3

Wscript.Quit

Он говорит, что проблема заключается в строке 1 Char 1. Есть идеи?

3 ответов


возможная проблема заключается в том, как ваш файл был закодирован; попробуйте сохранить его как ANSI и запустить его снова.


FYI для тех, кто с той же проблемой в будущем, чтобы исправить это:

  1. открыть .VBS в блокноте
  2. перейдите в файл и»сохранить как»
  3. справа в поле Имя файла, вы увидите выпадающее меню для кодирования. Выберите в ANSI.

Регистрация вы не используете расширенный характер, как á é í ó ú ñ в имени переменной


Понравилась статья? Поделить с друзьями:
  • Ошибка компиляции microsoft vbscript код 800a0408
  • Ошибка компиляции does not name a type
  • Ошибка компиляции microsoft vbscript 800a0409
  • Ошибка компаса неверная структура файла при открытии
  • Ошибка компиляции microsoft vbscript 800a03ea