Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
1

Получить заголовок окна CMD

06.04.2016, 00:05. Показов 6305. Ответов 23
Метки нет (Все метки)

Добрый вечер!

Допустим я запускаю некий скрипт в окне CMD. Подскажите, как можно получить текущее значение заголовка окна CMD?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2016, 00:05
Ответы с готовыми решениями:

Как получить хендл окна из batch/cmd?
В смысле как обратиться к другому окну? Добавлено через 53 секунды Задача состоит в том, чтобы...

Размер окна в cmd
Привет всем..такая вещь...есть как мы знаем все, команда для изменения размера окна в консоли ...

Незаметное открытие cmd-окна
Как сделать, так что бы на экране не было видно выполнение работы bat. Я произвожу запуск bat файла...

Защита окна CMD от нажатий
Доброго времени всем! Есть файл name.bat Содержимое его: @ECHO OFF echo Идет установка K-Lite...

23
1043 / 526 / 66
Регистрация: 16.01.2013
Сообщений: 4,086
06.04.2016, 07:57 2
lorents, подробнее опишите и для чего вам это. Может есть другой путь к решению вашей задачи.
0
4 / 4 / 2
Регистрация: 30.11.2015
Сообщений: 29
06.04.2016, 08:10 3
Так пойдет?
Windows Batch file
1
2
3
@ECHO OFF
title ThisWindowName
pause > nul
0
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
06.04.2016, 09:11  [ТС] 4
evgenii3000,
У меня есть bat-скрипт, когда его запускаю, он изменяет название заголовка на свой, хочу сделать так, чтобы когда скрипт заканчивает работу, менял названия заголовка который был до изменения.

Добавлено через 27 секунд
Upszn1449,
а что значит ThisWindowName?
0
4 / 4 / 2
Регистрация: 30.11.2015
Сообщений: 29
06.04.2016, 09:45 5
Я вас правильно понимаю, что изменяется название окна консоли? Вот и внесите желаемое название окна. (Вместо ThisWindowName)
Я часто пользуюсь такими конструкциями:
Windows Batch file
1
2
3
4
5
@ECHO OFF
title NAME1
REM Здесь первый блок операторов
title NAME2
REM Здесь второй блок операторов
Вот и будет изменятся название окна при выполнении скрипта.
0
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
06.04.2016, 10:06  [ТС] 6
Upszn1449, вся проблема в том, что не знаю какое название заголовка было до запуска моего скрипка.
0
3999 / 2002 / 630
Регистрация: 26.04.2015
Сообщений: 6,488
06.04.2016, 12:52 7
lorents,
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
::первый
@echo on
title proba1
echo privet
pause
 
::второй
@echo on
title proba2
echo privet
pause
Создайте два батника отдельных или в одном потом запустите и до этого откройте окно с процессами и подумайте для чего надо
Цитата Сообщение от lorents Посмотреть сообщение
получить текущее значение заголовка окна CMD?
Добавлено через 2 минуты
Если хочется отличать окна cmd (не важно) по заголовку или внутренностям то это в сторону autoit.
0
Покинул форум
3032 / 1067 / 292
Регистрация: 07.05.2015
Сообщений: 2,156
06.04.2016, 12:52 8
При чем здесь желание различать окна по заголовку?! Еще скажите по хэндлу. Человек русским языком написал: "заголовок окна" консоли, - в переводе на русский это значит:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
  setlocal
    for /f "tokens=2 delims=:-" %%i in (
      'tasklist /v /fi "imagename eq cmd.exe"^
       /fo list ^| findstr /rc:"- %~n0"'
    ) do set "ct=%%~i"
    set "ct=%ct:~1,-1%"
    title Condom principle
    ping -n 3 127.0.0.1>nul
    title %ct%
  endlocal
exit /b
0
Покинул форум
3032 / 1067 / 292
Регистрация: 07.05.2015
Сообщений: 2,156
06.04.2016, 17:05 9
Лучший ответ Сообщение было отмечено lorents как решение

Решение

Такого же эффекта можно добиться, используя PowerShell:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
  setlocal
    for /f "delims=-" %%i in (
      'powershell /nop /ex bypass "&{[Console]::Title}"'
    ) do set "ct=%%~i"
    set "ct=%ct:~0,-1%"
    title Condom principle
    ping -n 3 127.0.0.1>nul
    title %ct%
  endlocal
exit /b
2
3999 / 2002 / 630
Регистрация: 26.04.2015
Сообщений: 6,488
06.04.2016, 22:25 10
greg zakharov, На PS сработал 6-ю строку убрал, портит вывод
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo on
 
title proba1
echo privet
 
  setlocal
    for /f "delims=-" %%i in (
      'powershell /nop /ex bypass "&{[Console]::Title}"'
    ) do set "ct=%%~i"
    title Condom principle
    ping -n 3 127.0.0.1>nul
    title %ct%
  endlocal
pause
Получить заголовок окна CMD

вариант на cmd как ни крутил - ни в какую не определяет бывший заголовок.
1
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
07.04.2016, 00:06  [ТС] 11
greg zakharov, благодарю вас! именно то что нужно. У меня первый вариант тоже не работает. Подскажите, можно это исправить?
0
Покинул форум
3032 / 1067 / 292
Регистрация: 07.05.2015
Сообщений: 2,156
07.04.2016, 11:21 12
Цитата Сообщение от lorents
Подскажите, можно это исправить?
Как вариант: трассировка отдельно взятой команды, - чай, можно только предполагать, отчего у Вас оно не работает.
0
3999 / 2002 / 630
Регистрация: 26.04.2015
Сообщений: 6,488
07.04.2016, 13:37 13
Цитата Сообщение от lorents Посмотреть сообщение
Подскажите, можно это исправить?
С помощью cmd получилось так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo on
 
title proba1
echo privet
 
for /f "tokens=4 delims=:" %%a in ('tasklist /v /fi "imagename eq cmd.exe"^|find "Running"') do set "nt=%%a"
title proba2
ping -n 3 127.0.0.1>nul
title %nt: =%
pause>nul
.

Добавлено через 7 минут
Цитата Сообщение от alpap Посмотреть сообщение
find "Running"
- это надо точнее через findstr сделать
Windows Batch file
1
findstr /c:"Running"
, чтобы не было похожего в title, как вообще обойти качественнее не знаю пока и желательно чтобы в title "Что-то" было без пробелов вывод будет слитным или тогда в 9й строке
Windows Batch file
1
title %nt%
, но пробел спереди один (пол-беды, можно убрать
Windows Batch file
1
title %nt:~1%
) и после неимоверная куча, вид более менее, но в качестве, например имени или пути уже приплыли, придется все убирать и учитывать.
0
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
07.04.2016, 14:45  [ТС] 14
Благодарю! Я правильно понимаю лучше использовать версию PowerShell, что все работало быстро и без проблем?
0
3999 / 2002 / 630
Регистрация: 26.04.2015
Сообщений: 6,488
07.04.2016, 22:04 15
Цитата Сообщение от lorents Посмотреть сообщение
без проблем
- да,
Цитата Сообщение от lorents Посмотреть сообщение
быстро
- как когда, на скорость некоторые жалуются, особенно, если не отключать профиль, но при небольшой или редкой задаче вы этого и не заметите, а в целом альтернатива замечательная.

Добавлено через 6 часов 51 минуту
lorents, Если надо на чистом cmd, то вот так работает четко, даже с пробелами и совпадающем title со строкой поиска:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo on
 
title Running proba1
echo privet
 
for /f "tokens=4 delims=:" %%a in ('tasklist /v /fi "imagename eq cmd.exe" /fo csv /nh^|findstr /c:"Running"') do set "nt=%%~a"
echo %nt:~2,-1%
title proba2
ping -n 3 127.0.0.1>nul
title %nt%
pause
.
1
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
07.04.2016, 22:37  [ТС] 16
alpap, Спасибо большое!!!

Добавлено через 26 минут
alpap, у меня не работает
0
Миниатюры
Получить заголовок окна CMD  
3525 / 1442 / 244
Регистрация: 10.12.2013
Сообщений: 4,932
07.04.2016, 23:30 17
заголовки окон и так перед глазами, если ты не слепой.

какую задачу ты решаешь?
0
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 121
08.04.2016, 00:12  [ТС] 18
volodin661, у меня проект https://github.com/lorents17/iCatalyst при работе изменяет название заголовка, хочу сделать так, чтобы проект после работы возвращал название заголовка до изменения.
0
3999 / 2002 / 630
Регистрация: 26.04.2015
Сообщений: 6,488
08.04.2016, 00:27 19
Цитата Сообщение от lorents Посмотреть сообщение
у меня не работает
Быть не может:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo on
 
title Running proba1
echo privet
 
for /f "tokens=4 delims=:" %%a in ('tasklist /v /fi "imagename eq cmd.exe" /fo csv /nh^|findstr /c:"Running"') do set "nt=%%~a"
title proba2
ping -n 3 127.0.0.1>nul
title %nt:~2,-1%
pause
Получить заголовок окна CMD
.

Добавлено через 2 минуты
Разве что у вас не берет csv, а такое на некоторых системах бывает. В таком случае на вашей системе только через PS.
0
3525 / 1442 / 244
Регистрация: 10.12.2013
Сообщений: 4,932
08.04.2016, 00:58 20
Цитата Сообщение от lorents Посмотреть сообщение
хочу сделать так, чтобы проект после работы возвращал название заголовка до изменения.
Так запускай отдельной сессией ( CMD /c ),
после возврата должно вернуться старое наименование.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2016, 00:58

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Завершение процесса cmd по имени окна
Здравствуйте все. Фрагмент исполняемого bat файла: tasklist /v /fi "imagename eq cmd.exe" /fo...

Удаление файла при закрытие окна CMD
Приветствую! Выполняя команды писался в файл текст (file.txt), но тут решил просто закрыть окно...

Проверка наличия запущенного процесса cmd.exe по имени его окна
Очень нужна ваша помощь! Суть: необходимо в БАТнике провести проверку на предмет запущенного...

Как написать cmd создающий другой cmd
Добрый день. Смысл в том, чтобы создать CMD с настройками текущего ПК: имя компьютера и имя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.