Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37528 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven

Код:
 
for /f "skip=1 tokens=1,2" %%A in ('^
  2^>nul wmic.exe desktopmonitor get screenheight^, screenwidth^
') do (
  if not "" == "%%B" if not defined ScreenWidth (
    set ScreenHeight=%%A
    set ScreenWidth=%%B
  )
)
 

https://superuser.com/questions/270718/get-display-resolution-from-windows-command-line

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 22:16 15-10-2021
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Silver Raven

Цитата:
wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution

Всего записей: 10135 | Зарегистр. 11-03-2002 | Отправлено: 22:16 15-10-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Вот этот код работает на 64-х битных Windows. Только тормозит, при исполнении:

Код:
 
cls
@echo off
Title Dislpay Resolution by Hackoo 2018
Set "WMIC_Command=wmic path Win32_VideoController get VideoModeDescription^,CurrentHorizontalResolution^,CurrentVerticalResolution /format:Value"
Set "H=CurrentHorizontalResolution"
Set "V=CurrentVerticalResolution"
Call :GetResolution %H% HorizontalResolution
Call :GetResolution %V% VerticalResolution
echo(
echo     Screen Resolution is : %HorizontalResolution% x %VerticalResolution%
pause>nul & Exit
::****************************************************
:GetResolution  
FOR /F "tokens=2 delims==" %%I IN (
  '%WMIC_Command% ^| find /I "%~1" 2^>^nul'
) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%2=%%A"
Exit /b
::****************************************************
 

 
У меня есть собранное из разных кусков нечто:

Код:
 
set "TempConfig=Silver Raven mods pack data\temp_config.tmp"
set "MainConfig=Silver Raven mods pack data\main_config.cfg"
 
if exist "%TempConfig%" goto TempConfig
for /f "usebackq delims=" %%A in ("%MainConfig%") do (
  for /f "delims== tokens=1*" %%B in ("%%A") do (
 
:: Запись в конфиг-файл main_config.cfg
    >> "%TempConfig%" (
      if /i %%B==UpdateInstalled (
        echo %%B=false
      ) else (
        echo %%A
      )
    ) || (
      del /q "%TempConfig%"
      exit /b 1
    )
  )
)
move /y "%TempConfig%" "%MainConfig%"
 

редактируещее определенные секции в конфигах. По идее подойдет и под эту задачу?
 
Берем переменные %HorizontalResolution% и %VerticalResolution% и подставляем в ini файл:
 
iSize W=1920
iSize H=1080
 
И ни в коем случае нельзя не сломать структуру (пробелы там, разделения секций). Иначе перестанет читаться.

Всего записей: 128 | Зарегистр. 12-10-2012 | Отправлено: 22:59 15-10-2021 | Исправлено: Silver Raven, 23:00 15-10-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
Не знаю. Пробуйте.

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 23:19 15-10-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
wmic.exe desktopmonitor get screenheight^, screenwidth^

У меня на 10.0.19043.1288 x64 не работает (wmic выдаёт пустые значения)...

 
Silver Raven

Цитата:
Вот этот код работает на 64-х битных Windows. Только тормозит, при исполнении:

Я бы сказал  - излишне усложнено...
Вполне достаточно такого:

Код:
@echo OFF
for /F "delims=" %%A in ('wmic path Win32_VideoController get CurrentHorizontalResolution^,CurrentVerticalResolution /value ^|find "="') do set /A %%A
echo     Screen Resolution is : %CurrentHorizontalResolution% x %CurrentVerticalResolution%  
pause



----------
http://www.imho.ws

Всего записей: 1274 | Зарегистр. 12-10-2006 | Отправлено: 23:52 15-10-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Похоже, нормально работающих вариантов вообще нет: про вариант с desktopmonitor пишут, что он всегда выдает разрешение для первого (не основного!) монитора. Вариант с Win32_VideoController только что проверил на Win81x64 - та же ерунда. А на Win2k3 вообще ни один не работает.

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 00:48 16-10-2021
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven

Цитата:
Народ, а cmd-шником можно узнать текущее разрешение экрана (если их несколько, то только того, который установлен как основной)

С помощью powershell и winforms, в консоли cmd, пример выводит ширину (.Width):

Код:
powershell -command . {Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Size.Width}


Всего записей: 3075 | Зарегистр. 16-08-2012 | Отправлено: 09:24 16-10-2021
metatrop

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
Народ, а cmd-шником можно узнать текущее разрешение экрана (если их несколько, то только того, который установлен как основной).
 

 
Не поможет ли разбор строчки
 
cmdow.exe "Program Manager" /B /P /F

Всего записей: 264 | Зарегистр. 17-09-2010 | Отправлено: 18:52 16-10-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
metatrop

Цитата:
Не поможет ли разбор строчки


Цитата:
"cmdow.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.


----------
http://www.imho.ws

Всего записей: 1274 | Зарегистр. 12-10-2006 | Отправлено: 13:14 17-10-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Встретился мне один батник проверки локального диска.
(локальный диск у меня NTFS, а операционка Win7SP1ru)
 
Дак вот - очень Странно этот батник себя ведёт  
Если его запускать из под проводника, то пишет:
"CHKDSK недопустим для дисков NTFS" и, естественно, ничего не делает ...
Если ж его запустить из командной строки, то поверка работает штатно
 
Вот сам батник:

Код:
Title Check Disk D:  [0:1]  Fixed    NTFS  108.352  
 @Echo off  
 @Echo.  
 @Echo.  
 @Echo ======================================================  
 @Echo Test D:  [0:1]  Fixed    NTFS  108.352  
 @Echo ======================================================  
 @Echo.  
 @Echo.  
 Color f0  
 chkdsk.exe D: /F /X
set /p Ok=^>^>

 
Вопрос:
Что мешает батнику отработать штатно (проверить диск NTFS) при запуске из под проводника ?

Всего записей: 2394 | Зарегистр. 11-12-2002 | Отправлено: 19:06 17-10-2021 | Исправлено: kot1313, 19:07 17-10-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313

Цитата:
пишет:
"CHKDSK недопустим для дисков NTFS" и, естественно, ничего не делает ...

Воспроизвести проблему не удалось...
Единственно на что ругается - так это на то, что для запуска нужны права администратора.
"От имени Администратора" - отрабатывает штатно.


----------
http://www.imho.ws

Всего записей: 1274 | Зарегистр. 12-10-2006 | Отправлено: 19:44 17-10-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Рядом с батником что-нибудь лежит?

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 20:08 17-10-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
Рядом с батником что-нибудь лежит

Нет. Батник один. Запускал проводником из разных мест. Эффект тот же.  
"CHKDSK недопустим для дисков NTFS"
 
BorlandIMHO

Цитата:
"От имени Администратора"

Я даж его из проводника и от TI, и от администратора.  
Усё равно - "CHKDSK недопустим для дисков NTFS"
 
Кстати, у Вас скриншот из фара. Фар доставать долго. Для этого нужно включать uVs (от там у меня)
Но думаю из фара работать и у меня будет штатно, поскоку из моего TC 8.51 этот батник запускается и отрабатывает штатно.  
Усё проверяет. Да, TC 8.51 у меня запускается от админа по умолчанию ...  
И из тотала 10.00 x86, который запускается с обычными правами, так же батник отрабатывает штатно.  
Как и при запуске непосредственно из коммандной строки
 
Похоже, это у меня какой-то редкий косяк с проводником в системе.  
А Упоминаний про "CHKDSK недопустим для дисков NTFS" я в поисковиках вообще не нашёл.
Хотя искал минут 15. Пусто. Ни у кого такого не было...

Всего записей: 2394 | Зарегистр. 11-12-2002 | Отправлено: 22:35 17-10-2021 | Исправлено: kot1313, 22:46 17-10-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313

Цитата:
у Вас скриншот из фара.

Запускал из "Проводника". FAR там чисто для редактирования скрипта...
Повторил опыт ещё раз, уже на 64-бит.
Результат абсолютно идентичен предыдущему...

Можно с уверенностью говорить, что причина ошибки непосредственно в настройках вашей системы.


----------
http://www.imho.ws

Всего записей: 1274 | Зарегистр. 12-10-2006 | Отправлено: 00:31 18-10-2021 | Исправлено: BorlandIMHO, 00:34 18-10-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Батник выложите. Файлом на обменник.

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 00:35 18-10-2021 | Исправлено: GCRaistlin, 01:14 18-10-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
Батник выложите. Файлом на обменник.

Вот
 
Добавлено:
BorlandIMHO

Цитата:
Можно с уверенностью говорить, что причина ошибки непосредственно в настройках вашей системы

И я так думаю. Пора переходить на 10ку  
 
GCRaistlin
BorlandIMHO
Спасибо Вам за помощь  

Всего записей: 2394 | Зарегистр. 11-12-2002 | Отправлено: 02:20 18-10-2021 | Исправлено: kot1313, 23:51 21-10-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Содержимое батника не совпадает с тем, что вы писали выше.

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 02:28 18-10-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
А в чём не совпадает ?
Я тока что проверил - батник и текст идиентичные

Всего записей: 2394 | Зарегистр. 11-12-2002 | Отправлено: 17:58 18-10-2021 | Исправлено: kot1313, 18:05 18-10-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Диск не тот.
 
Добавлено:
Вернее, теперь уже тот. Я смотрел исходный текст сообщения в почте.
У меня выдает: "Cannot open volume for direct access". Потому что в системе нет диска D.

----------
Magically yours
Raistlin

Всего записей: 3147 | Зарегистр. 18-04-2005 | Отправлено: 18:15 18-10-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Упростил батник до значимой части

Код:
@Echo off  
chkdsk.exe D: /F /X
Pause

Пишет  

Цитата:
Тип файловой системы: NTFS.
CHKDSK недопустим для дисков NTFS.


И это для любого диска NTFS, необязательно диска D
Так что это у меня косяк срабатывания такого батника из под проводника.
Интересно было бы знать, что вызывает такое странное поведение стандартной проверки диска.
И чем отследить эту причину. Но чем отследить - я не знаю, из инструментов ничего в голову не приходит.

Всего записей: 2394 | Зарегистр. 11-12-2002 | Отправлено: 19:02 18-10-2021 | Исправлено: kot1313, 19:03 18-10-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru