Вот моя модификация @rashy выше. Сценарий выполняет следующие действия:
Это сценарий:
@echo off
TITLE Modifying your HOSTS file
COLOR F0
ECHO.
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"="
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
:LOOP
SET Choice=
SET /P Choice="Do you want to modify HOSTS file ? (Y/N)"
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED
IF /I '%Choice%'=='N' GOTO REJECTED
ECHO Please type Y (for Yes) or N (for No) to proceed!
ECHO.
GOTO Loop
:REJECTED
ECHO Your HOSTS file was left unchanged>>%systemroot%\Temp\hostFileUpdate.log
ECHO Finished.
GOTO END
:ACCEPTED
setlocal enabledelayedexpansion
::Create your list of host domains
set LIST=(diqc.oca wiki.oca)
::Set the ip of the domains you set in the list above
set diqc.oca=192.168.111.6
set wiki.oca=192.168.111.4
:: deletes the parentheses from LIST
set _list=%LIST:~1,-1%
::ECHO %WINDIR%\System32\drivers\etc\hosts > tmp.txt
for %%G in (%_list%) do (
set _name=%%G
set _value=!%%G!
SET NEWLINE=^& echo.
ECHO Carrying out requested modifications to your HOSTS file
::strip out this specific line and store in tmp file
type %WINDIR%\System32\drivers\etc\hosts | findstr /v !_name! > tmp.txt
::re-add the line to it
ECHO %NEWLINE%^!_value! !_name!>>tmp.txt
::overwrite host file
copy /b/v/y tmp.txt %WINDIR%\System32\drivers\etc\hosts
del tmp.txt
)
ipconfig /flushdns
ECHO.
ECHO.
ECHO Finished, you may close this window now.
ECHO You should now open Chrome and go to "chrome://net-internals/#dns" (without quotes)
ECHO then click the "clear host cache" button
GOTO END
:END
ECHO.
ping -n 11 192.0.2.2 > nul
EXIT
Краткий ответ : Это не имеет значения.
cfscript
ничего не выводит, если вы явно не вызываете из него writeOutput (). Сюда входят функции в cfscript
, а также любой код cfscript
вне функции.
Это отличается от синтаксиса тегов CF, который по умолчанию выводит как минимум пробелы между теги. В cfscript
любой текст, который вы пишете, будет компилироваться механизмом CFML. в тегах CF любой текст, который вы напишете, будет записан в выходной буфер и отправлен в браузер.
Длинный ответ : Это то же самое, что не указывать выходной атрибут.
блоки cfscript
ничего не выводят. Любые блоки тегов, если только они не заключены в cfsilent
, выводят пробелы, если ничего больше. Да, даже cffunctions работают, но вывод игнорируется, если атрибут output установлен в false.
Суть ответа Питера Боутона верна. Он не заключен ни в cfsilent
, ни в cfoutput
. Вывод не запрещен, но этого не произойдет, если вы не сделаете это явно.
Вы всегда можете комбинировать cffunction
на основе тегов со сценарием, чтобы получить лучшее из обоих миров. Что-то вроде ...
<cffunction name="x" output="false" access="package">
<cfargument name="y" type="string" required="false" default="YY" />
<cfscript>
var someValue = y & "something";
writeOutput("test"); // this will not be written
return someValue;
</cfscript>
</cffunction>
Это позволяет вам указать вывод и доступ к тегу cffunction
, а также разрешить аргументы быть необязательными (что нельзя сделать с помощью функций cfscript
),
Я не совсем уверен, но предполагаю, что функции сценария в этом отношении такие же, как теги cffunction
- в том смысле, что по умолчанию не используется ни истина
ни ложь
.
Установка атрибута output
для функции
, следующие случаи:
истина
эквивалентно функции, заключенной в cfoutput
. false
эквивалентно функции, заключенной в cfsilent
. cfoutput
, ни в cfsilent
. Однако я почти никогда не использую cfscript
, и на самом деле это может быть не так - мы 'Придется ждать, пока другие придут и подтвердят или исправят это.
Функции cfscript - странная обезьяна. И то, и другое. Вы не можете указать, что они output = "false", но они есть, пока вы не используете writeOutput (), но они сообщаются cfcexplorer как output = "true". Я думаю, что это странный вопрос, которым сейчас занимается консультативный комитет cfml.