Технический форум
Вернуться   Технический форум > Компьютерный форум > Операционная система Windows


Ответ
 
Опции темы Опции просмотра
Старый 11.08.2012, 22:46   #1 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию Вопросы по написанию bat-файлов

Здравствуйте. Решил я изучить команды командной строки и использование их в bat-файлах. В целом, основы понял, но есть одна проблема: cmd плохо обрабатывает параметры, написанные на русском языке. Например, простейший скрипт заканчивается таким образом:

Код:
@Prompt ">" 
@Echo Hallo!
@PAUSE
@Set /P ProgNM="Type the program's name: "
@Runas /user:Администратор %ProgNM%
@Set ProgNM=0
@PAUSE
Нажмите на изображение для увеличения
Название: Админ.png
Просмотров: 1651
Размер:	35.7 Кб
ID:	92044

Пробовал советы из интернета, не помогло.
  • в начале скрипта писать "chcp 1251"
  • Менять кодировку файла: "BAT-ники используют кодовую страницу DOS 866 (русский), а Блокнот - кодовую страницу WINDOWS 1256 (русский)..."
  • пиши в Ворде, потом - Сохранить как - Обычный текст - Сохранить - MS-DOS - OK
  • а можно и в виндовом Блокноте, только выбери шрифт Terminal
  • ввести "Set nls_lang=russian_cis.ru8pc866"
В первом способе пробовал писать разные кодировки, но становилось только хуже - даже латинский текст превращался в иероглифы. Вариант с Вордом - вообще не вариант, в файле я получил вот это:
Код:
@Prompt ">" <*ҐЁ@Echo Hallo!<*ҐЁ@PAUSE<*ҐЁ@Set /P ProgNM="Type the program's name: "<*ҐЁ@Runas /user:Ђ¤¬Ё*Ёбва*в®а %ProgNM%<*ҐЁ@Set ProgNM=0<*ҐЁ@PAUSE<*ҐЁ
Я понимаю, что кириллица больное место для консоли, но может есть какой-то выход? Иногда в батнике приходится писать на кириллице пути к файлам, но... Не находил ли кто-то решения проблемы?
MrSTEP вне форума   Ответить с цитированием

Старый 11.08.2012, 22:46
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме уже не раз встречалось что то подобное, почитайте

Вопросы по TDA 7294
Нужна помощь по написанию программы на языке С ++
Вопросы по C#
Вопросы по БП
Вопросы по динамику

Старый 11.08.2012, 23:17   #2 (permalink)
Ultras
Member
 
Аватар для Ultras
 
Регистрация: 17.05.2010
Адрес: Казань
Сообщений: 6,044
Записей в дневнике: 13
Сказал(а) спасибо: 42
Поблагодарили 2 раз(а) в 1 сообщении
Репутация: 30182
По умолчанию

Пишите в редакторе, который поддерживает 866 кодовую страницу (Bred3, например. Или FAR).
__________________
Не шалю, никого не трогаю, починяю примус...
Ultras вне форума   Ответить с цитированием
Старый 12.08.2012, 13:15   #3 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

О, вот это дело! Написал в Bred3 в кодировке OEM - все получилось Спасибо, с этим разобрался, следующие вопросы на подходе.

Кстати, в Notepad++ тоже есть это: Кодировки - Кириллица - OEM 866. И оно тоже работает.
MrSTEP вне форума   Ответить с цитированием
Старый 12.08.2012, 20:10   #4 (permalink)
Hirurg
Системный администратор
 
Аватар для Hirurg
 
Регистрация: 28.08.2010
Сообщений: 2,101
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2814
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
[*]в начале скрипта писать "chcp 1251"
chcp 1251
всегда писали в bat-никах для backup баз когда путь на русском)))))
и проблем вроде не возникало)))))

p.s. По правилам "безопасности" - нельзя использовать имя Администратор)))
Данную учетку вам необходимо переименовать и отключить это я так...к слову)))
Hirurg вне форума   Ответить с цитированием
Старый 12.08.2012, 21:10   #5 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

А мы на работе задаем ей пароль и отключаем при вводе в домен.
MrSTEP вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 12.08.2012, 22:11   #6 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Вопрос номер следующий: как заставить bat-файл запуститься, выполниться и закрыться? Проблема в том, что это надо выполнить из другого батника. Пример, файл ALL.BAT:
Код:
start GTAIV.bat
start GTASA.bat
Файл GTAIV.BAT:
Код:
@echo off
@echo Copying savegames of GTA IV
@xcopy "T:\aleskey\Rockstar Games\GTA IV" "GTA IV\" /e/y
@echo Done!
После выполнения каждого сценария остается окно с приглашением командной строки. Можно ли этого как-то избежать, автоматом закрывая окна после выполнения?


Добавлено через пару минут: Дописал в конец файлов exit, и окошки закрылись. Странно, с первого раза не проканало.. Вопрос снят
MrSTEP вне форума   Ответить с цитированием
Старый 13.08.2012, 20:50   #7 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Цитата:
Сообщение от Hirurg Посмотреть сообщение
chcp 1251
всегда писали в bat-никах для backup баз когда путь на русском)))))
Кстати... Попробовал написать, далее поставил команду копирования между русскоязычными папками - все заработало! Правда, на экране даже латиница превратилась в кракозябры. Зато работает

Кстати, насчет вопроса с вызовом другого файла: нашел альтернативный способ: вместо "start GTAIV.bat" можно написать "call GTAIV.bat" - файл вызывается в этом же окне консоли, и по окончании возвращает управление исходному файлу. Естественно, вызываемый файл не должен закрываться (не содержать exit'а).
MrSTEP вне форума   Ответить с цитированием
Старый 24.08.2012, 23:44   #8 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Еще вопрос: а можно ли запустить из bat'а программу, и не ожидать ее завершения? Пишу таким образом:
Код:
"C:\Program Files\Download Master\dmaster.exe" -autorun
После вызова программы сценарий ожидает, пока она завершится, а мне это не надо. Есть варианты?
MrSTEP вне форума   Ответить с цитированием
Старый 25.08.2012, 00:46   #9 (permalink)
Ultras
Member
 
Аватар для Ultras
 
Регистрация: 17.05.2010
Адрес: Казань
Сообщений: 6,044
Записей в дневнике: 13
Сказал(а) спасибо: 42
Поблагодарили 2 раз(а) в 1 сообщении
Репутация: 30182
По умолчанию

Команда start Вам поможет.
простейший синтаксис в Вашем случае:
Код:
start C:\Progra~1\Downlo~1\dmaster.exe -autorun
или
Код:
start /D "C:\Program Files\Download Master" dmaster.exe -autorun
__________________
Не шалю, никого не трогаю, починяю примус...

Последний раз редактировалось Ultras; 25.08.2012 в 00:52
Ultras вне форума   Ответить с цитированием
Старый 25.08.2012, 13:48   #10 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Во, отлично, так получилось - без кавычек хороший вариант. Второй, впрочем, тоже нужно взять на заметку.

Это я сейчас пытаюсь оптимизировать время загрузки системы, и все ненужные программы из автозагрузки выключаю. А при необходимости хочу запустить некоторый набор прог из батника.
MrSTEP вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:13.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.