Как запустить VBScript из командной строки без Cscript / Wscript

Я новичок в VBScript. Я погуглил и узнал, что мы можем запустить VBScript из командной строки, выполнив следующую команду:

Например, мое имя vbscript — Converter.vbs , и оно присутствует в папке D: VBS .

Я могу запустить его следующими способами:

  CScript "D  :  VBS  Converter.vbs " 

OR

  WScript" D:  VBS  Converter.vbs " 

Теперь я хотел бы выполнить приведенный выше VBScript без Cscript или Wscript , просто набрав имя VBscript name, например Converter.

Я НЕ ХОЧУ УКАЗАТЬ ПОЛНЫЙ ПУТЬ VBSCRIPT КАЖДЫЙ РАЗ.

Может кто-нибудь посоветовать мне, как это сделать?


Я разложу это на несколько отдельных частей, так как каждая часть может быть выполнена индивидуально. (Я вижу аналогичный ответ, но я дам более подробное объяснение здесь ..)

Первая часть , чтобы не набирать «CScript «(или» WScript «), вам необходимо указать Windows, как запустить файл сценария * .vbs. В моей Windows 8 (я не могу быть уверен, что все эти команды работают точно так, как показано здесь в более старых версиях Windows, но процесс тот же, даже если вам нужно немного изменить команды), запустите окно консоли (также известное как «командная строка», или [неправильно] «подсказка dos») и введите « assoc .vbs «. Это должно привести к ответу, например:

  C:  Windows  System32> assoc .vbs.vbs = VBSFile  

Используя это, вы затем набираете « ftype VBSFile », что должно привести к ответу:

  C:  Windows  System32> ftype  VBSFilevbsfile = "% SystemRoot%  System32  WScript.exe" "% 1"% *  

-OR-

  C  :  Windows  System32> ftype VBSFilevbsfile = "% SystemRoot%  System32  CScript.exe" "% 1"% *  

Если эти два уже определены, как указано выше, ваша Windows ‘уже настроен, чтобы знать, как запустить файл * .vbs. (BTW, WScript и CScript — это одна и та же программа, но с разными именами. WScript запускает скрипт, как если бы это была программа с графическим интерфейсом пользователя, а CScript запускает его, как если бы это была программа командной строки. См. Другие сайты и/или документацию для этих деталей. и предостережения.)

Если какая-либо из команд не ответила, как указано выше (или аналогичные ответы, если тип файла, сообщенный ассоциацией, и/или команда, выполненная, как сообщается ftype, имеют разные имена или местоположения ), вы можете ввести их самостоятельно:

  C:  Windows  System32> assoc .vbs = VBSFile  

-and/ или —

  C:  Windows  System32> ftype vbsfile = "% SystemRoot%  System32  WScript. exe ""% 1 "% *  

Вы также можете ввести» help assoc «или» help ftype «для получения дополнительной информации об этих командах, которые часто удобны, когда вы хотите автоматически запускать определенные программы, просто вводя имя файла с определенным расширением. (Однако будьте осторожны, поскольку некоторые расширения файлов специально настроены Windows или программами, которые вы можете установлены, чтобы они работали правильно. Всегда проверяйте текущие присвоенные значения, указанные в assoc/ftype, и сохраняйте их где-нибудь в текстовом файле на случай, если вам придется их восстановить.)

Второй часть , избегая ввода расширения файла при вводе команды из окна консоли. Понимание того, как Windows (и программа CMD.EXE) находит команды, которые вы вводите, полезно для этой (и следующей) части. команду, давайте использовать «querty» в качестве примера команды, система сначала попытается найти команду во внутреннем списке команд (через настройки в реестре Windows для самой системы f, или запрограммированный в случае CMD.EXE). Поскольку такой команды нет, он попытается найти команду в текущей переменной среды% PATH%. В более старых версиях DOS/Windows CMD.EXE (и/или COMMAND.COM) автоматически добавлял расширения файлов «.bat», «.exe», «.com» и, возможно, «.cmd» к имени команды, которое вы введено, если вы явно не ввели расширение (например, «querty.bat», чтобы не запустить «querty.exe» по ошибке). В более современной Windows он попробует расширения, перечисленные в переменной среды% PATHEXT%. Итак, все, что вам нужно сделать, это добавить .vbs в% PATHEXT%. Например, вот мой% PATHEXT%:

  C:  Windows  System32> set pathextPATHEXT = .PLX; .PLW; .PL; .BAT; .CMD; .VBS  ; .COM; .EXE; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PY  

Обратите внимание, что расширения ДОЛЖНЫ включать «.» , разделены знаком «;», и что .VBS указан ПОСЛЕ .CMD, но ПЕРЕД .COM. Это означает, что если командный процессор (CMD.EXE) находит более одного совпадения, он будет использовать первое из перечисленных. То есть, если у меня есть query.cmd, querty.vbs и querty.com, он будет использовать querty.cmd.

Теперь, если вы хотите делать это все время, не сохраняя установив% PATHEXT%, вам придется изменить системную среду. Ввод его в окне консоли изменяет его только для этого сеанса окна консоли. Я оставлю этот процесс в качестве упражнения для читателя. 😛

Третья часть , запуск скрипта без ввода полного пути. Эта часть по отношению ко второй части существует со времен DOS. Просто убедитесь, что файл находится в одном из каталогов (папок, для вас, народ Windows!), Перечисленных в переменной среды% PATH%.. Я предлагаю создать свой собственный каталог для хранения различных файлов и программ, которые вы создаете или часто используете из окна консоли/командной строки ( то есть не беспокойтесь о том, чтобы делать это для программ, которые вы запускаете из меню «Пуск» или любым другим способом … только из окна консоли. Не связывайтесь с программами, которые установлены Windows или автоматическим установщиком, если вы не знаете, что вы повторно ).

Лично я всегда создаю каталог «C: sys bat» для командных файлов, каталог «C: sys bin» для * .exe и файлы * .com (например, если вы загружаете что-то вроде «md5sum», утилиту для проверки контрольных сумм MD5), каталог «C: sys wsh» для сценариев VBS (и сценарии JScripts с именем «wsh», потому что оба они выполняются с использованием «Windows Scripting Host» или программа «wsh») и так далее. Затем я добавляю их в свою системную переменную% PATH% (Панель управления -> Дополнительные параметры системы -> вкладка «Дополнительно» -> кнопка «Переменные среды»), чтобы Windows всегда могла их найти, когда я их ввожу.

Объединение всех трех частей приведет к настройке вашей системы Windows таким образом, что везде, где вы можете ввести команду командной строки, вы можете запустить свой VBScript, просто набрав его базовое имя файла. Вы можете сделать то же самое практически для любого типа/расширения файла; Как вы, вероятно, видели в моем выводе% PATHEXT%, моя система также настроена для запуска сценариев Perl (.PLX; .PLW; .PL) и сценариев Python (.PY). (Я также помещаю «C: sys bat; C: sys scripts; C: sys wsh; C: sys bin» перед моим% PATH% и помещаю различные командные файлы, файлы сценариев и т. д. в этих каталогах, чтобы Windows всегда могла их найти. Это также удобно, если вы хотите «переопределить» некоторые команды: размещение файлов * .bat вначале пути заставляет систему находить их перед файлами * .exe , например, а затем файл * .bat может запустить фактическую программу, указав полный путь к фактическому файлу * .exe. Посетите различные сайты, посвященные «программированию пакетных файлов», чтобы узнать подробности и другие примеры возможностей командная строка .. Она еще не умерла!)

И последнее замечание: НЕОБХОДИМО проверить некоторые другие сайты для различных предупреждений и оговорок. В этом вопросе был задан сценарий с именем «converter.vbs», который опасно близок к команде «convert.exe», которая представляет собой программу Windows для преобразования вашего жесткого диска из файловой системы FAT в файловую систему NTFS. Что-то, что может ударите по жесткому диску, если вы допустили опечатку!

С другой стороны, используя описанные выше методы, вы также можете защитить себя от таких ошибок. На примере CONVERT.EXE. Переименуйте его в «REAL_CONVERT.EXE», затем создайте файл типа «C: sys bat convert. bat «, который содержит:

  @ECHO OFFECHO! DANGER!! DANGER!! DANGER!! DANGER, WILL ROBINSON! ECHO Эта команда преобразует ваш жесткий диск в NTFS!  ДЕЙСТВИТЕЛЬНО ХОТИТЕ СДЕЛАТЬ?! ECHO PRESS CONTROL-C ЧТОБЫ ПРЕРЫВАТЬ, иначе ... REM "PAUSE" приостановит выполнение командного файла с сообщением "Нажмите любую клавишу, чтобы продолжить ...", REM и также позволит пользователю нажать CONTROL  -C, который предложит пользователю прервать или REM продолжить выполнение командного файла.PAUSEECHO Хорошо, если вы действительно настроены сделать это, введите эту команду: ECHO.% SystemRoot%  SYSTEM32  REAL_CONVERT.EXEECHO, чтобы запустить настоящий CONVERT.  EXE-программы. Удачного дня!  

Вы также можете использовать CHOICE.EXE в современной Windows, чтобы пользователь вводил «y» или «n», если они действительно хотят продолжить, и так далее … Опять же, мощь пакетных (и скриптовых) файлов!

Вот несколько ссылок на хорошие ресурсы о том, как использовать всю эту мощь:

http://ss64.com/

http://www.computerhope.com/batch.htm

http://commandwindows.com/batch.htm

http://www.robvanderwoude.com/batchfiles.php

Большинство этих сайтов ориентированы на пакетные файлы, но большая часть информации в них относится к запуску любой тип пакетного (* .bat) файла, командного (* .cmd) файла и файлов сценариев (* .vbs, * .js, * .pl, * .py и т. д.).

1


При вводе полной спецификации файла скрипта или его имени файла в командной строке оболочка будет использовать информацию доступным способом

  assoc |  grep -i vbs.vbs = VBSFileftype |  grep -i vbsVBSFile =% SystemRoot%  System32  CScript.exe "% 1"% *  

, чтобы решить, какую программу запускать для сценария. В моем случае это cscript.exe, в вашем — wscript.exe — это объясняет, почему ваш WScript.Echos приводит к MsgBoxes.

As

  cscript/? Использование: CScript имя_сценария.расширение [параметр ...] [аргументы ...] Параметры://B Пакетный режим: подавляет отображение ошибок сценария и подсказок//D Включить активную отладку//E: использование движка  механизм для выполнения скрипта//H: CScript Изменяет хост скрипта по умолчанию на CScript.exe//H: WScript Изменяет хост скрипта по умолчанию на WScript.exe (по умолчанию)//I Интерактивный режим (по умолчанию, противоположный//B)//Job: xxxx Выполнить задание WSF//Отображение логотипа (по умолчанию)//Отображение логотипа Nologo Prevent: во время выполнения баннер не будет отображаться//S Сохранить текущие параметры командной строки для этого пользователя//T: nn Время ожидания истекло.  секунд: Максимальное время, в течение которого скрипту разрешено запускаться//X Выполнить скрипт в отладчике//U Использовать Unicode для перенаправленного ввода-вывода с консоли  

показывает, вы можете использовать// E и//S, чтобы навсегда переключить ваш хост по умолчанию на cscript.exe.

Если вы настолько ленивы, что даже не хотите вводить расширение, убедитесь, что переменная среды PATHEXT

  установлена ​​|  grep -i vbsPATHEXT = .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH;. py; .pyw; .tcl; .PSC1  

содержит .VBS, и на вашем пути нет Converter.cmd (который преобразует ваш жесткий диск в стиральную машину).

Обновить комментарий:

Если вы «не хотите каждый раз указывать полный путь к моему vbscript», вы можете:

  1. поместите ваш CONVERTER.VBS в папку, которая включена в переменную среды PATH; затем оболочка выполнит поиск по всем путям — при необходимости с учетом PATHEXT и информации ftype/assoc — для соответствующего «исполняемого файла».
  2. поместите CONVERTER.BAT/.CMD в каталог пути который содержит строку типа cscript p: ath to CONVERTER.VBS

В обоих случаях Я бы набрал расширение, чтобы избежать (неприятных) сюрпризов.

3


Мне интересно, почему вы не можете поместить это в пакетный файл. Пример:

  cd D:  VBS  WSCript Converter.vbs  

Поместите указанный выше код в текстовый файл и сохраните текстовый файл с расширением .bat. Теперь вам нужно просто запустить этот .bat-файл.


Зачем Разве вы не помещаете vbscript в гибрид пакетного файла/файла vbscript. Назовите пакетный гибрид Converter.bat, и вы сможете запустить его прямо как Converter из строки cmd. Конечно, вы можете по умолчанию ВСЕ скрипты запускать из Cscript или Wscript, но если вы хотите выполнять свои vbs как скрипт Windows, а не как консольный скрипт, это может вызвать некоторую путаницу позже. Так что просто установите свой код в пакетный файл и запустите его напрямую.

Проверьте ответ -> Здесь

А вот пример:

Converter.bat

  :: 'VBS/Batch Hybrid ::' --- Пакетная часть --------- rem ^ & @ echo offrem ^ & call: 'subrem  ^ & exit/b: 'subrem ^ & echo begin batchrem ^ & cscript//nologo//e: vbscript "% ~ f0" rem ^ & echo end batchrem ^ & exit/b' ----- Часть VBS ----- Dim testertester  = "Преобразовать данные сюда" Тестер Msgbox  


Вы можете выполнить следующие шаги:

  • Откройте CMD (командную строку)
  • Введите ‘D:’ и нажмите Enter. Пример: C: Users [Ваше имя пользователя]> D :
  • Введите «CD VBS» и нажмите Enter. Пример: D: > CD VBS
  • Введите «Converter.vbs» или «start Converter.vbs» и нажмите Enter. Exam Пожалуйста: D: VBS> Converter.vbs Или D: VBS> запустите Converter. vbs


Невозможно запустить файл vbscript в Windows 10

Когда я пытаюсь запустить файл .vbs на моем ноутбуке с Windows 10 , появляется следующая ошибка.


Я могу придумать две причины, по которым это могло произойти:

  1. Сценарий загружается из Интернета, поэтому он заблокирован. Разблокируйте его с помощью свойств файла.
  2. У вас установлено какое-то антивирусное ПО, которое блокирует доступ к файлу. Проверьте свои журналы на наличие любой информации.

РЕДАКТИРОВАТЬ

На основании комментария Питера (спасибо за это) я редактирую свой ответ.

Вы, вероятно, либо проблема с правами — вы у вас нет прав на выполнение вашего скрипта на рабочем столе или вы, возможно, вообще заблокировали скрипт? От вас требуется дополнительная информация — что это за сценарий? Лучше всего предоставить исходный код + какие права на каталог (или цепочку каталогов), в котором вы пытаетесь выполнить свой код.

Это на тот случай, если вам нужно повысить права ваш сценарий, который еще не является вашим случаем:

У вас должны быть права для запуска вашего сценария. Вы можете запустить командную строку от имени администратора

или

использовать runas/noprofile/user: mymachine administrator your_script.vbs из командной строки пользователя

Или

Наконец, вы можете добавить UAC прямо в свой скрипт:

Это исходный код из Microsoft Technet :

  '----------------------------------  ----- 'Поднимите этот скрипт перед его запуском.' 25.2.2011 FNL '-------------------------------  -------- bElevate = Falseif WScript.Arguments.Count> 0 Тогда Если WScript.Arguments (WScript.Arguments.Count-1)  "|"  затем bElevate = True, если bElevate или WScript.Arguments.Count = 0 Затем ElevateUAC '******************' Ваш сценарий идет сюда '**********  ******** '-----------------------------------------  «Запустить этот сценарий с повышенными привилегиями» ----------------------------------------- Sub  ElevateUAC sParms = "|"  Если WScript.Arguments.Count> 0 Тогда Для i = WScript.Arguments.Count-1 До 0 Шаг -1 sParms = "" & WScript.Arguments (i) & sParms Далее Конец Если установлен oShell = CreateObject ("Shell.Application"  ) oShell.ShellExecute «wscript.exe», WScript.ScriptFullName & sParms,, «runas», 1 подпрограмма WScript.QuitEnd  

2


Проверьте, находится ли файл на «Общем рабочем столе». Если это так, он будет отображаться на визуальном «рабочем столе» каждого пользователя, но Windows не сможет найти его в папках рабочего стола пользователя.

Оцените статью
clickpad.ru
Добавить комментарий