Rumata пишет:После каждого символа апострофа стоит невидимый символ SUB
Можно ограничиться только одним непечатным знаком в первой строке, переписав остальные в виде
(без пробелов между «rem» и «:»).
Мне, впрочем, «Option Explicit» милее полного подавления отображения команд пакетного файла, поэтому вернусь к решению http://forum.script-coding.com/viewtopi … 346#p79346:
wisgest пишет:Option Explicit должен быть первым оператором — даже пустые операторы перед ним не допускаются, но возможны комментарии:
': 2>nul&CScript.exe /nologo /e:vbs "%~f0" %*&exit /b
— сказанное относится и к комментариям, созданным с помощью ключевого слова REM, поэтому можно обойтись без попыток обращения к несуществующему файлу/диску и подавления сообщения об ошибке:
rem:& @echo off
rem:& setlocal enableextensions disabledelayedexpansion
rem:& CScript.exe -nologo -i -t:0 -e:vbs" %~f0" %*
rem:& endlocal& exit /b
Option Explicit
Dim str
str = "Hello, world!"
WScript.Echo str
— заметим, что часть первой строки после «@» не отображается и на выход попадает только (с точностью до %PROMPT%):
C:\Documents and Settings\user\Рабочий стол>rem: &
(можно после этого «rem:» вставить какую-нибудь приличествующую случаю поучительную или пояснительную надпись, например, «VBScript in "%~nx0"»).
Ну и, конечно, не следует забывать о команде CLS. Но она поможет только при запуске из Проводника или другого файлового приказчика, а как быть с перенаправлением вывода?
Не знаю, как у вас, а у меня перенаправление вывода в загадочный для меня поток с дескриптором &3, в отличии от дескрипторов с большими значениями, приводит без дополнительных действий к выводу в окно консоли также как для &1 (stdout) и &2 (stderr).
Поэтому, в отсутствие перенаправления строка
rem:& CScript.exe -nologo -i -t:0 -e:vbs" %~f0" %*>&3
работает по прежнему, а при перенаправлении лишнее легко убрать:
vbs.bat 1>nul 3>log.txt
(vbs.bat 1>nul) 3>&1| more