Как запустить программу через командную строку в Windows 10, 7
При работе с командной строкой и написании командных файлов часто возникает необходимость в запуске других программ. В данной статье мы рассмотрим несколько способов, как можно запускать программы через командную строку в операционных системах Windows 10 и Windows 7.
Запуск по названию исполняемого файла
Многие программы в командной строке можно запускать просто указав название их исполняемого файла. Например, вы можете ввести в командную строку « notepad » и запустить программу « Блокнот » или ввести « mspaint » и запустить « Paint ».
Это работает благодаря переменной окружения « PATH » в которой записан список папок, где Windows должна искать исполняемые файлы для программ. Список этих папок можно просмотреть, если ввести в командную строку команду « path ».
Если вы хотите запустить программу из другой папки, которая не указана в переменной « PATH », то вы можете временно изменить папку для поиска исполняемых файлов. Для этого нужно ввести команду « path » и через пробел указать путь к нужной папке. Например, мы можем указать путь к папке с программой AkelPad:
И потом запустить эту программу выполнив команду «akelpad»:
Нужно отметить, что команда «path» влияет только на текущий сеанс командной строки, при этом значение переменной « PATH » не меняется.
Запуск с указанием полного пути
Еще один способ запуска программ – это указание полного пути к исполняемому exe-файлу. Для этого достаточно вставить в командную строку полный путь и указанная программа будет запущена.
Например, для запуска программы AkelPad в командную строку нужно вставить следующее:
Обратите внимание, если путь содержит пробелы, то его нужно взять в кавычки, в других случаях кавычки не обязательны.
Запуск с помощью команды «start»
Также для запуска других программ можно использовать команду «s tart ». С ее помощью можно запускать как программы для командной строки, так и приложения с графическим интерфейсом.
Для запуска программ данным способом нужно ввести команду « start » и через пробел указать название программы. Например, для того чтобы запустить текстовый редактор «Блокнот» нужно выполнить следующее:
Как и в предыдущем случае, Windows будет искать исполняемый файл в папках, которые указаны в переменной окружения « PATH ».
Но, команда « start » позволяет и вручную указать путь к папке с программой. Для этого нужно использовать параметр « /D ».
Например, для того чтобы запустить программу « akelpad » из папки « C:\Program Files (x86)\AkelPad » нужно выполнить следующее:
Одной из особенностей команды «s tart » является то, что она позволяет запускать программы с высоким приоритетом.
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
Полезные команды в консоли Windows
Программистам часто приходится работать в консоли — например, чтобы запустить тестирование проекта, закоммитить новый код на Github или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становится быстрее и привычнее выполнять в консоли. Рассказываем и показываем основные команды, которые помогут ускорить работу в терминале под ОС Windows.
Для начала нужно установить терминал или запустить командную строку, встроенную в Windows — для этого нажмите Win+R и введите cmd. Терминал часто встречается и прямо в редакторах кода, например, в Visual Studio Code.
Содержимое текущей папки — dir
Выводит список файлов и папок в текущей папке.
Открыть файл
Чтобы открыть файл в текущей папке, введите его полное имя с расширением. Например, blog.txt или setup.exe.
Перейти в другую папку — cd
Команда cd без аргументов выводит название текущей папки.
Перейти в папку внутри текущего каталога
Перейти на одну папку вверх
Перейти в папку на другом диске
Чтобы просто изменить диск, введите c: или d:
Создать папку — mkdir или md
Создаём пустую папку code внутри папки html :
Создаём несколько пустых вложенных папок — для этого записываем их через косую черту.
Удалить папку — rmdir или rd
При этом удалить можно только пустую папку. Если попытаться удалить папку, в которой что-то есть, увидим ошибку.
Показать дерево папок — tree
Если вы хотите посмотреть содержимое всего диска, введите tree в корне нужного диска. Получится красивая анимация, а если файлов много, то ещё и немного медитативная.
Удаление файла — del или erase
Команда для удаления одного или нескольких файлов.
Переименование файла — ren или rename
Последовательно вводим ren, старое и новое имя файла.
Команды одной строкой
Очистить консоль — cls
Информация о системе — systeminfo
Информация о сетевых настройках — ipconfig
Список запущенных процессов — tasklist
Справка по командам — help
Команда help без аргументов выводит список всех возможных команд. help вместе с именем команды выведет справку по этой команде.
В этой статье приведены не все команды и не все их возможности, но вы всегда можете воспользоваться командой help и узнать о том, что ещё может командная строка.
Консоль — важный инструмент веб-разработчика
Научитесь пользоваться всеми инструментами в HTML Academy, чтобы работать с кодом в большой компании.
Как указать C:\Program Files без пробела в нем для программ, которые не могут обрабатывать пробелы в пути к файлам?
Конфигурационный файл нуждается в позиции другого файла,
но этот файл находится в папке «C:\Program Files»,
и путь с пространством в нем не распознается,
Есть ли другой способ указать местоположение без пробела в нем?
ОТВЕТЫ
Ответ 1
вы должны иметь возможность использовать
1 (обозначение короткого имени)
Попробуйте c: \ > dir/x (в оболочке dos)
Отображаются короткие имена сгенерированный для имен файлов не-8dot3. Формат имеет формат /N с короткое имя, вставленное перед длинным имя. Если короткое имя отсутствует, пробелы отображаются на своем месте.
Ответ 2
При их указании всегда указывайте в кавычках, потому что Microsoft может содержать в них пробелы или другие специальные символы.
Ответ 3
Используйте следующие обозначения:
Спасибо @lit за ваш идеальный ответ в комментарии ниже:
Используйте переменные окружения % ProgramFiles% и % ProgramFiles (x86)%
Ответ 4
Я думаю, что причина, по которой предполагают использование имени C:\PROGRA
1, получила downvotes, состоит в том, что эти имена рассматриваются как устаревшая функция Windows, которую можно забыть, что также может быть нестабильным, по крайней мере, между различными установками, хотя, вероятно, не на той же машине.
Кроме того, как заметил кто-то в комментарии к другому ответу, Windows может быть настроена так, чтобы не иметь имен устаревшей версии 8.3 в файловой системе вообще.
Ответ 5
В оболочке Windows (при использовании CMD.exe) используется% ProgramFiles%, чтобы указать папку Program Files, независимо от того, где она находится. Так как стандартный файловый менеджер Windows учитывает такие переменные среды, как это, если программа была хорошо написана, она должна поддерживать это.
Кроме того, можно было бы использовать относительные адреса. Если установленная вами программа установлена правильно, она уже должна находиться в папке Program Files, поэтому вы можете просто ссылаться на файл конфигурации как. \Config_file.txt, если она находится в том же каталоге, что и программа, или.. \other_program\config_file.txt, если его в каталоге отличается от другой программы. Это применимо не только к Windows, но и практически для каждой современной операционной системы и будет работать правильно, если у вас установлен «Start In», или вы запускаете его непосредственно из своей папки.
Ответ 6
не запускается Internet Explorer, но
Ответ 7
Вы можете попробовать использовать короткое имя файла (возможно, c:\PROGRA
1 ), но вы действительно не рассказываете нам много деталей.
Другой возможной возможностью было бы поставить кавычки по всему пути, «c:\program files\Path\configfile.ini»
Ответ 8
Иногда вы можете указать имя файла.
Некоторые программы будут терпеть кавычки. Поскольку вы не предоставляли какую-либо конкретную программу, невозможно определить, будут ли кавычки работать для вас.
Ответ 9
Попробуйте окружить путь в кавычках. i.e «C:\Program Files\Appname\config.file»
Ответ 10
Вы можете использовать следующие методы для указания C:\Program Files без пробела для программ, которые не могут обрабатывать пробелы в путях к файлам:
Ответ 11
Вы можете попробовать:
Ответ 12
В 64-битных окнах, возможно
Ответ 13
Я думаю, что другие сообщения ответили на вопрос, но только некоторые интересные для вашей информации (из командной строки):
Это предоставит список только каталогов, а также предоставит их «короткие имена».
Ответ 14
Существует много способов избежать проблем с пространством, некоторые из них уже упоминались:
В командной строке, в определении ярлыка, в файлах bat и в большинстве программ, используя путь api в Windows, вы можете попробовать окружить путь к вашему файлу двойными кавычками, подобными этому:
Для той же категории программного обеспечения вы также можете использовать короткое имя (унаследованное от DOS и ограниченное до 8 символов для каждого уровня
В файлах свойств java и вам нужно либо избежать пробела, добавив \before (обратите внимание, что вам также нужно сбежать\или заменить его на /):
Ответ 15
В качестве альтернативы другим ответам вы можете использовать символические ссылки.
Сначала создайте символическую ссылку и установите приложение на основе ссылки. (В зависимости от случая это может быть проще сделать, например, когда приложение имеет в своем коде n упоминаний целевой папки)
Символическая ссылка создаст что-то похожее на ярлык для папки, но другие приложения видят ее как фактическую папку.
Вот как вы это делаете:
А затем вы начинаете использовать «C:\LinkToProgramFiles» в приложениях, которые не могут обрабатывать пробелы. (Эту ссылку можно увидеть в проводнике Windows как папку с символом ярлыка)
Будьте очень осторожны, чтобы не создавать круговые ссылки, если вы слишком много играете с этим.
Ответ 16
Использовать сгенерированное короткое имя (C:\Progra
1) или окружать путь кавычками.
Ответ 17
Вы можете просто создать папку ProgramFiles на локальном D или локальном C, чтобы установить те приложения, которые могут быть установлены в имя папки, в которой есть SPACES/Characters.
Как в командной строке написать program files
Общие сведения о командных файлах.
или по конкретной команде:
Для вывода потока данных команды HELP в файл help.txt командная строка будет следующей:
Для вывода справки по команде GOTO в файл goto.txt:
HELP GOTO > goto.txt
Использование переменных окружения.
переменная Имя переменной среды.
строка Строка символов, присваиваемая указанной переменной.
Например, командная строка
добавит переменную myname, принимающую значение Vasya.
выведет на экран слово time, а команда
выведет на экран значение переменной time, принимающей значение текущего времени.
А командная строка
добавит в путь поиска исполняемых программ, описываемый значением переменной PATH каталог C:\myprog
Выполнение команды SET без параметров вызывают выдачу текущих значений переменных на экран, в виде:
OS=Windows_NT- тип ОС
Значение некоторых переменных по команде SET не выдаются. Это переменные, значения которых динамически изменяются :
Для просмотра значения переменной можно использовать командную строку:
Входные параметры для командного файла.
Существует возможность передать командному файлу параметры командной строки и использовать их значения в операторах самого командного файла.
Создаем файл parm.bat следующего содержания:
echo Первый параметр=%1
echo Второй параметр=%2
echo Третий параметр = %3
и запускаем его на выполнение следующей командой:
parm.bat FIRST second “two words”
rem ECHO OFF выключает режим вывода содержания строк командного файла на экран
REM будет выводиться только результат их выполнения.
echo Первый параметр=%1
echo Второй параметр=%2
echo Третий параметр = %3
Попробуйте ECHO OFF заменить на @ECHO OFF – результат говорит сам за себя. Строка, которая выключает режим вывода, перестала выдаваться на экран.
В командных файлах можно использовать команды условного перехода, меняющие логику их работы в зависимости от выполнения определенных условий. Для иллюстрации приемов использования условных переходов создадим командный файл, целью которого будет присвоение заранее определенной буквы диска для съемных носителей, в качестве которых будут использоваться флэш-диски. Условия таковы – есть 2 флэш-диска, один из которых должен быть виден в проводнике как диск X: а второй – как диск Y: независимо от того, в какой порт USB они подключены. Будем считать, что реальные диски могут быть подключены как F: или G: Опознавание дисков будем выполнять по наличию файла с определенным именем (лучше такой файл сделать скрытым в корневом каталоге и назвать его как-нибудь необычно):
Flashd1.let – на первом диске
Flashd2.let – на втором
Т.е. задача командного файла заключается в том, чтобы проверить наличие на сменных дисках F: и G: файлов Flashd1.let или Flashd2.let и, в зависимости от того, какой из них присутствует, присвоить диску букву X: или Y:
Для поиска файла на диске используем команду IF EXIST :
IF EXIST имя_файла команда
Создаем командный файл setXY.bat со следующими строками:
IF EXIST G:\flashd1.let SUBST X: G:\
IF EXIST F:\flashd1.let SUBST X: F:\
IF EXIST G:\flashd2.let SUBST Y: G:\
IF EXIST F:\flashd2.let SUBST Y: F:\
После выполнения такого файла у вас появятся диски X: и Y: Но если такой файл выполнить повторно, команда SUBST выдаст сообщение об ошибке – ведь диски X: и Y: уже существуют.
Метка должна находиться в отдельной строке и начинаться с двоеточия. Сделаем изменения в нашем командном файле, чтобы не возникало сообщений об ошибке:
IF NOT EXIST X:\ GOTO SETX
IF EXIST G:\flashd1.let SUBST X: G:\
IF EXIST F:\flashd1.let SUBST X: F:\
REM если Y: существует – завершим командный файл.
IF EXIST Y:\ GOTO EXIT
IF EXIST G:\flashd2.let SUBST Y: G:\
IF EXIST F:\flashd2.let SUBST Y: F:\
REM выход из командного файла
При выполнении test.bat будет выдано на экран сообщение
и управление получит 1.bat с командой pause. После начатия клавиши на клавиатуре управление получит командная строка “ECHO Возврат.” и на экран будет выдано
Выйти из зацикливания командного файла можно по нажатию комбинации CTRL-Break. Возможно использование команды CALL для вызова процедуры внутри командного файла. В этом случае в качестве аргумента используется не имя внешнего файла, а метка:
.
call :proc1
.
:proc1
.
exit
.
В Windows нет специальной команды для создания файла, но без нее можно легко обойтись несколькими способами:
Копирование с консоли в файл
COPY CON myfile.txt
При выполнении этой команды данные с клавиатуры (устройство CON) будут заноситься в файл myfile.txt. Нажатие клавиши F6 или комбинации CTRL-Z завершит вывод.
При выполнении этой команды будет создан файл myfile.txt, содержащий символ “1”
Комбинация перенаправления ввода и вывода:
COPY CON > myfile.txt nul в файл.
copy nul myfile.txt
Поместите этот командный файл в системный каталог (C:\windows\system32 или любой другой, имеющийся в путях поиска, задаваемых PATH).
Вот вам и команда nf для создания пустого файла в командной строке.
Присвоение съемному диску одной и той же буквы.
d0. Создаем командный файл следующего содержания:
@echo off
subst X: %
Создание поколений архивов по датам и времени.
Таким образом, для решения задачи нужно правильно создать имена и пути для RAR. Для чего воспользуемся следующими факторами:
Создаем каталог на диске C:, имя которого = текущая дата из переменной VDATE:
MD C:\%VDATE%
После выполнения этой команды на диске C: будет создан каталог с именем 20.01.2005
0,-3%
Теперь VTIME = 14:30:59, но знак » : » в имени файла использовать нельзя, поэтому заменим его на точку.
set VTIME=%VTIME::=.%
Переменная VTIME примет значение 14.30.59 Для имени файла сойдет.
Теперь можно создать командный файл с содержимым:
3%
md c:\%VDATE%
set VTIME=%time:
Такой командный файл можно выполнять через автозагрузку, или как часть скрипта, при входе пользователя в домен, либо с помощью планировщика в заданное время, и у вас всегда будут в наличии упорядоченные по времени архивы критических данных.
Создание архивов с использованием переменных профиля пользователя.
Этот командный файл создает архивы содержимого папки «Мои Документы» пользователей Win2K/XP, размещая их в каталоги
C:\ARHIV\Мои документы\Имя пользователя\Дата\время
Используются переменные USERPROFILE, USERNAME, WINDIR, поэтому в WIN9X этот командный файл работать не будет. (Хотя, при желании вы можете вставить в autoexec.bat команды для установки значений этих переменных и использовать его в однопользовательском варианте практически без изменений). Содержимое командного файла снабжено комментариями и не должно вызывать особых затруднений, если вы разобрались с предыдущим примером:
0,-5%
GOTO SetFileName
:Win2K
set vdate=%DATE:
Выполнение команд по расписанию.
AT [\\имя_компьютера] [ [код] [/DELETE] | /DELETE [/YES]]
AT [\\имя_компьютера] время [/INTERACTIVE]
[ /EVERY:день[. ] | /NEXT:день[. ]] «команда»
\\имя_компьютера Имя удаленного компьютера. Если этот параметр опущен,
используется локальный компьютер.
/delete Отмена запланированной задачи. Если код задачи опущен,
отменяются все задачи, запланированные для указанного
/yes Отмена запроса на подтверждение при отмене всех
время Время запуска команды.
/interactive Разрешение взаимодействия задачи с пользователем,
работающим на компьютере во время запуска задачи. Задачи, запущенные без этого ключа невидимы для пользователя компьютера.
/every:день[. ] Запуск задачи осуществляется по указанным дням недели или
месяца. Если дата опущена, используется текущий день
/next:день[. ] Задача будет запущена в следующий указанный день недели
(например в следующий четверг). Если дата опущена,
используется текущий день месяца.
«команда» Команда или имя пакетного файла.
AT 13:50 net.exe send * Пора пить кофе
AT 17:50 net.exe send User Пора домой
AT \\SERVER 13:45 net.exe send Нужно перезагрузить сервер
— Просмотр списка запланированных задач:
— Удаление уже спланированных задач:
AT 3 /DELETE – удаление задачи с номером 3
AT /DELETE /YES – удаление всех задач
Остановка и запуск системных сервисов.
Для остановки и запуска служб Win2K/XP из командной строки используется команда NET.EXE
net stop «DNS-клиент»
net start «DNS-клиент»
То же, с использованием короткого имени:
net start Dnscache
Для управления службами гораздо удобнее воспользоваться утилитой PsService.exe из утилит PsTools Утилита не требует установки и работает в любой OS Windows. Кроме запуска и остановки службы, позволяет выполнить поиск конкретной службы на компьютерах локальной сети, опросить состояние и конфигурацию службы, изменить тип запуска, приостановить службу, продолжить, перезапустить.
Этот простенький командный файл выдаст на экран значение переменной ERRORLEVEL по конкретной командной строке. Вначале выполняется проверка на наличие хотя бы одного входного параметра, и если ничего не задано, выдается сообщение об ошибке и происходит завершение по exit. Если же хотя бы один параметр задан, то входные параметры считаются командной строкой и выполняются, а значение ERRORLEVEL выдается с помощью команды ECHO. Содержимое файла (я назвал его echoEL.bat):
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать командную строку для определения ERRORLEVEL
exit
:PARMOK
%1 %2 %3 %4 %5 %6 %7 %8
ECHO %1 %2 %3 %4 %5 %6 %7 %8 ERRORLEVEL=%ERRORLEVEL%
Примеры запуска:
echoEL.bat NET SHARE
— будет выполнена команда NET SHARE (выдать список разделяемых сетевых ресурсов) и выдан код ERRORLEVEL
echoEL.bat NET SHARE X»=»C:\
— будет выполнена команда NET SHARE X:=C:\ (создать разделяемый сетевой ресурс с именем X, и путем в корневой каталог диска C:) Обратите внимание на то, что символ = заключен в двойные кавычки.
Перечисленные выше варианты задают корректную командную строку. Но попробуйте задать неверный параметр для NET.EXE или вообще несуществующую команду и вы увидите, какое значение примет ERRORLEVEL. И УЧТИТЕ, что командная строка реально ВЫПОЛНЯЕТСЯ и, например, вариант «echoEL.bat format A:» запустит форматирование дискеты в дисководе A:.
Диалог с пользователем
@ECHO OFF
:CHOICE
CHOICE /C:1230 /T:0,10 Ваш вариант
IF %ERRORLEVEL% EQU 4 GOTO EXIT
echo Ваш выбор=%ERRORLEVEL%
GOTO CHOICE
:EXIT
Теперь, используя CHOICE вы можете создавать командные файлы, логика работы которых может определяться пользователем.
Задержки в командных файлах
Когда-то, еще в DOS, для организации ожидания в командном файле использовалась удобная команда SLEEP, но затем она почему-то перекочевала из стандартного установочного набора Windows в дополнительный Resource Kit. Можно просто скопировать его оттуда в каталог \system32 и использовать в ваших командных файлах.
Если же Resource Kit нет под рукой, можно воспользоваться ранее рассмотренной командой CHOISE без вывода текста и с автоматическим формированием ответа через nn секунд (1-99):
Поиск компьютеров с запущенным приложением
В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist.exe и PSkill.exe должны быть доступны в путях поиска исполняемых файлов, например в каталоге WINDOWS. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам. И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие имя пользователя и пароль.
Поиск компьютеров с запущенным приложением по списку
В предыдущем примере использовался прямой перебор IP-адресов компьютеров в локальной сети, что не всегда удобно, поскольку в процедуру опроса оказываются вовлечены и выключенные компьютеры. Решим задачу другим способом. Создадим текстовый файл со списком компьютеров и опросим их по этому списку.
Список можно получить из сетевого окружения с использованием команды:
net.exe view > comps.txt
После выполнения такой команды файл comps.txt будет содержать список следующего вида:
Обрабатывать содержимое этого текстового файла будем с помощью команды FOR с ключом /F:
FOR /F [«ключи»] %переменная IN (имя файла) DO команда [параметры]
Окончательный вид команды:
Выключение компьютеров по списку, созданному на основе сетевого окружения.
Предыдущий пример натолкнул меня на мысль сделать пакетный файл для быстрого выключения всех компьютеров в сети. Выключение производится утилитой PsShutdown.exe (описание в статье «Утилиты пакета PSTools»). Как и в предыдущем примере, сначала создается файл со списком компьютеров на основе сетевого окружения, а затем выполняется их поочередное выключение, при условии, что компьютер не свой (иначе он может выключиться до окончания выполнения командного файла). Содержимое файла:
Работа с оконными приложениями.
start /MAX notepad.exe
start «This is CMD.EXE» /MIN cmd.exe
net send %COMPUTERNAME% NOTEPAD and CMD running.
После выполнения этого командного файла вы увидите стартовавшие, в развернутом окне (ключ /MAX) блокнот, в свернутом окне (ключ /MIN) командный процессор CMD.EXE и окно с сообщением net.exe. Стандартный заголовок окна cmd.exe заменен на текст «This is CMD.EXE». Обратите внимание на то что заголовок окна можно опускать, но особенность обработки входных параметров утилитой start.exe может привести к неожиданным результатам при попытке запуска программы, имя или путь которой содержит пробел(ы). Например при попытке выполнить следующую команду:
start «C:\Program Files\FAR\FAR.EXE»
Из-за наличия пробела в пути к исполняемому файлу, строка для запуска FAR.EXE должна быть заключена в двойные кавычки, однако формат входных параметров для start.exe предполагает наличие заголовка окна, также заключаемого в двойные кавычки, в результате чего «C:\Program Files\FAR\FAR.EXE» интерпретируется не как исполняемая программа, а как заголовок окна. Для того, чтобы подобного не случилось нужно использовать любой, пусть даже пустой, заголовок:
start «» «C:\Program Files\FAR\FAR.EXE»
Если вам все же потребуется расширенное управление окнами приложений, придется воспользоваться сторонним программным обеспечением, например, CMDOW Скачать
Пример командного файла, закрывающего окна Проводника Интернет (IEXPLORE.EXE):
@echo off
:M1
for /f «tokens=1-2,8» %%a in (‘cmdow’) do (
if /i «%%c»==»IEXPLORE» if «%%b»==»1» cmdow %%a /END > nul
)
goto M1
и если каталог D:\SCRIPTS не прописан в путях поиска (переменная PATH ) то модуль MYPROG.EXE может быть найден и выполнен только если текущим каталогом является D:\SCRIPTS. Но если вы укажете полный путь к myprog.exe
То программа будет найдена и выполнена в любом случае.
Rem Сменим текущий диск
Rem перейдем в каталог SCRIPTS
Прием со сменой каталога наиболее универсален и, как правило всегда срабатывает.
Старайтесь использовать команды Setlocal и Endlocal, чтобы не оставлять мусор из переменных, созданных или модифицированных командным файлом.
Командные файлы удобно использовать для выполнения каких-либо действий при регистрации пользователя в домене. Делается это с помощью вкладки «Profile» свойств пользователя домена.