Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.77/844: Рейтинг темы: голосов - 844, средняя оценка - 4.77
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
1

Тонкости языка, редкие команды и сложные скрипты

16.10.2012, 06:56. Просмотров 165804. Ответов 95

Тема для пользователей высокого уровня подготовки.

Здесь можете размещать:
  • Ваши статьи;
  • Ссылки на другие статьи (допускаются статьи на английском языке);
  • Редкие ошибки, выдаваемые интерпретатором, способы их устранения/либо причины возникновения.
  • Недокументированные и особые трюки работы с файловой системой, устройствами и т.п.
  • Разрешено обсуждение выложенных здесь материалов (в последствии будут выделены в отдельную тему);
  • Запрещено обсуждение новичками проблем работы с CMD, где вероятная причина - банальная синтаксическая ошибка.


Статьи и тонкости языка:
Основы
  • FAQ по файлам BAT/CMD (статья) ссылка
  • Командная строка Windows (статья) ссылка
  • Особенности реализации командного процессора cmd.exe операционных систем WinNT (статья) сайт
  • Циклические операции и примеры (статья) эта тема
  • Принцип составления однострочных команд Batch (статья) эта тема
Автозапуск
  • Запуск Bat-файла как службы Эта тема
  • Выполнение командного файла перед входом в систему Эта тема
Безопасность и права
  • Элевация прав запуска BAT-файла (отображается диалог контроля учетных записей UAC) ссылка
  • Как запустить командную строку от имени администратора. эта тема
Интерфейс
  • Переключение языка вывода команд консоли на английский ссылка
КомментарийМатематика
  • Деление с выводом дробной части на батниках ссылка
  • Деление через строковую математику (для делимого, превышающего тип данных signed long int) ссылка
  • Получение 16-ричного представления числа эта тема
  • Получение кода символа по таблице ASCII из числового значения byte эта тема
  • Перевод чисел из десятеричной системы в любую (2-16) эта тема
  • Логические операции сравнения для чисел, превышающих арифметику CMD эта тема
Операционная система, реестр
  • Почему нежелательно запускать BAT из 32-битной среды в 64-разрядной системе. ссылка
  • Функции чтения/записи ключа реестра с отображением уровня ошибки ссылка
Переменные и аргументы
  • Подстановка значения переменной в имя или параметр другой переменной эта тема
  • Перебросить значение через локаль эта тема
  • Часто задаваемые вопросы по использованию аргументов командной строки (статья) сайт
  • Получение рабочего каталога на определенном диске эта тема
  • Undocumented Dynamic variables (недокументированные способы раскрытия переменных среды) эта тема
ПотокиПроцессы
  • Получение PID, имени, пути и параметров запуска процесса эта тема
Связь с другими языками программирования и средами, комбинированные батники

  • -- JScript
  • Скомбинированный файл CMD + JS (WSH) эта тема
  • Выполнение JS кода через mshta.exe эта тема
    -- VBScript
  • Передача значения из BAT-сценария в VBS-скрипт эта тема
  • Метод возврата значения из VBS-скрипта в BAT-сценарий эта тема
  • Получение ErrorLevel из команды CMD в переменную VBS-скрипта тема
    -- Реестровый ключ
  • Способ хранения ключа реестра внутри бат-файла эта тема
    -- Ресурсы внутри BAT-файла
  • Распаковка текстовой информации, заданной меткой в файле CMD, во внешний файл тема
  • Встраивание ресурсов в БАТ-файл тема
    -- Другое:
  • Комбинированный файл CMD + KIXTART
  • Объектно-ориентированное программирование на bat ссылка
Текстовые операции и работа с "массивами"
  • Вывод текста без переноса на новую строку (статья) эта тема
  • Чтение текста из файла без пропуска пустых строк эта тема
  • Экранировать восклицательный знак эта тема
  • Получить последний токен в заданной строке эта тема
  • Урезать в строке справа лишние пробелы или другие подряд идущие символы эта тема
  • Получение символов BackSpace (0x08) и Esc (0x27) в переменную эта тема
  • Функция для работы с массивами эта тема
  • Считывание файла в псевдомассив с учетом пустых строк эта тема
  • Функция правильного выравнивания текста по знакам табуляции эта тема
  • Способ передачи в бат-файл параметра содержащего символы & и последующей обработки полученного значения эта тема
Циклы
  • Подстановка переменной в роле модификатора для цикла эта тема
  • Разбиение строки на токены, если разделитель - кавычка эта тема
Файловые операции
  • Объединить 2 файла (сохранив результаты в одном из них) эта тема
  • Получение информации о размере папки эта тема

References, Special Manuals, Книги для High Level Users:
  • Command-line Reference (Microsoft Tech-Net)
  • Недокументированные и малоизвестные возможности Windows XP (книга)
  • Описание встроенных консольных утилит и команд для различных версий ОС dx21.com CMD-Reference

Баги интерпретатора CMD и встроенных команд
Планируется разместить:
Rem не всегда является командой начала комментария
Создание и удаление точек повторной обработки сайт
.

Если у Вас возникли вопросы, создайте новую тему.
16
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 06:56
Ответы с готовыми решениями:

Тонкости языка С,define
Здравствуйте. Разбираюсь с одной либой для hd44780, есть вопрос по поводу использования define'ов....

Поддерживает ли встроенный сервер PHP скрипты языка Perl?
В PHP существует встроенный сервер. Создаю файл index.html с формой и файл test.pl для ее...

создать програму которая содержит в себе команды обработки строк языка асемблер
Создать програму которая содержит в себе команды обработки строк языка асемблер. Выполнить введение...

Не могу найти коды языка html которые бы выполняли команды, .выбор категории фото
мне уже известны коды html .которые делают на сайте,выбор фото и загрузить. но этого мало, нужно...

Вам представлен машинный код нескольких команд. Получите соответствующие им команды языка Ассемблера
Вам представлен машинный код нескольких команд. Получите соответствующие им команды языка...

95
greg zakharov
Покинул форум
2279 / 939 / 259
Регистрация: 07.05.2015
Сообщений: 1,832
02.05.2016, 11:23 81
Дополнение к посту о вариантах самоудаления
Было написано когда-то в стол - казалось что ценности не представляет, а если учесть, что очень похоже на вариант второй, предложенный ComSpec, то можно просто расценивать пример как "до кучи".
Windows Batch file
1
@echo off&2>nul goto&rundll32 advpack.dll,DelNodeRunDLL32 "%~f0"
2
ComSpec
3412 / 1956 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
03.05.2016, 09:06 82
Три варианта самоудаления пакетного файла вместе с папкой, в которой он находится, без вывода сообщения об ошибке:

1)
Windows Batch file
cd/d "%~dp0.."& start/b cmd /c rd/q/s "%~dp0"
;

2)
Windows Batch file
cd/d "%~dp0.."&  2>nul goto& rd/q/s "%~dp0"
;

3)
Windows Batch file
cd/d "%~dp0.."& "%~f0">"%~f0"& rd/q/s "%~dp0"
.

Команду CD /D можно заменять на команду PUSHD.

Будьте осторожны при использовании!
5
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
07.06.2016, 15:45  [ТС] 83
Поиск и присвоение значения переменной в потоке

Вывод результатов поиска в одну строку
0
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
21.07.2016, 19:58  [ТС] 84
В дополнение к самоудалению...

Самоудаление программы, написанной на ЯВУ (C++, VB, любая) средствами командной строки cmd.

VB6:
Visual Basic
1
2
Dim f$: f = """" & App.Path & "" & App.EXEName & ".exe"""
Shell "cmd /v/c (set f=" & f & "&for /l %l in () do if exist !f! (del /f/a !f!) else (exit))", 0
C++
C++
1
2
3
4
5
6
7
8
9
#include <stdlib.h>
#include <sstream>
 
int main(int argc, char *argv[])
{
    std::stringstream SS;
    SS << "start cmd /v/c \"set f=" << argv[0] << "&for /l %l in () do if exist !f! (del /f/a \"!f!\") else (exit)\"";
    system(SS.str().c_str());
}
0
21.07.2016, 19:58
utkabobr
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 15
06.08.2016, 00:55 85
Хочу представить вашему вниманию язык программирования на batch
Кликните здесь для просмотра всего текста
WAT?

В общем для установки надо запустить installer.bat от администратора
Пример программы:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
echo Sums of compile.bat:
md5("compile.bat",file)
echo Md5: %result%
crc32("compile.bat")
echo crc32: %result%
base64("compile.bat",file)
echo Base64: %result%
pause
exit /b
Всё остальное в папке docs
0
Вложения
Тип файла: zip EAZZYBATCH.zip (2.26 Мб, 36 просмотров)
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
20.08.2016, 00:47  [ТС] 86
Присвоение значения переменной, полученного через канал и другие фичи.
0
Banberry
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 6
28.02.2017, 10:29 87
По поводу этой команды: copy /b FILE.EXT+,,
Можете объяснить, зачем в конце две запятые?
0
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
02.03.2017, 17:46  [ТС] 88
На сколько я понимаю, это вместо разделителей аргументов, чтобы команда не воспринимала их отсутствие как ошибку в синтаксисе.
В windows 7 вообщем то можно и без них:
Windows Batch file
1
copy /b FILE.EXT+
на других не тестировал.

А сама команда - подобно *nix-овой touch, меняет дату модификации файла на текущую.
1
volodin661
2206 / 992 / 166
Регистрация: 10.12.2013
Сообщений: 3,313
02.03.2017, 22:15 89
то есть,
Windows Batch file
1
copy/b *+
поменяет modified date & accessed date на текущую у всех файлов в каталоге...
неплохо.
2
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
02.03.2017, 22:20  [ТС] 90
Можно просто:

Windows Batch file
1
copy *+
1
zb
6 / 6 / 0
Регистрация: 08.05.2017
Сообщений: 55
10.05.2017, 16:35 91
подавление вывода команд
почему-то принято при использовании chcp перенаправлять в nul, что оборачивается генерацией соответствующего ф-ла. решения:
тунель в никуда
Windows Batch file
1
chcp 1251 | break
тунель в комментарий
Windows Batch file
1
chcp 1251 | rem
0
Dragokas
Эксперт WindowsАвтор FAQ
17088 / 7143 / 861
Регистрация: 25.12.2011
Сообщений: 10,951
Записей в блоге: 16
10.05.2017, 16:40  [ТС] 92
nul <> null
1
Jeka8
Заблокирован
19.11.2017, 19:34 93
Advanced usage - CALL SET
The CALL SET syntax allows a variable substring to be evaluated, read the CALL page for more detail on this technique:

Windows Batch file
1
2
3
4
5
SET start=10
SET length=9
SET string=The quick brown fox jumps over the lazy dog
CALL SET substring=%%string:~%start%,%length%%%
ECHO (%substring%)
0
b0gus
286 / 180 / 78
Регистрация: 17.03.2014
Сообщений: 512
10.04.2018, 00:24 94
забавное использование certutil:
Windows Batch file
1
certutil.exe -urlcache -split -f "https://download.sysinternals.com/files/PSTools.zip" %temp%\pstools.zip
загрузит в папку %temp% файл https://download.sysinternals.com/files/PSTools.zip

источник

таким образом, на ОС, старше Win7, для загрузки файлов из интернета в командной строке - CURL устанавливать не нужно
3
YuS_2
Любознательный
1116 / 647 / 197
Регистрация: 10.03.2016
Сообщений: 1,497
10.04.2018, 09:35 95
Цитата Сообщение от b0gus Посмотреть сообщение
таким образом, на ОС, старше Win7, для загрузки файлов из интернета в командной строке - CURL устанавливать не нужно
Вопрос только в том, насколько старше? Ибо, например, в XP этой утилиты нет.
0
SilverVox
2 / 2 / 0
Регистрация: 05.09.2017
Сообщений: 4
15.05.2019, 00:36 96
Недокументированные возможности REGINI
(Windows 7)

Помимо стандартных разрешений указзаных в справке:
Кликните здесь для просмотра всего текста
1 - Администратор, полный доступ

2 - Администратор, чтение

3 - Администратор, чтение и запись

4 - Администратор, чтение, запись и удаление

5 - Создатель, полный доступ

6 - Создатель, чтение и запись

7 - Все, полный доступ

8 - Все, чтение

9 - Все, чтение и запись

10- Все, чтение, запись и удаление

11- Опытные пользователи, полный доступ

12- Опытные пользователи, чтение и запись

13- Опытные пользователи, чтение, запись и удаление

14- Системный оператор, полный доступ

15- Системный оператор, чтение и запись

16- Системный оператор, чтение, запись и удаление

17- Система, полный доступ

18- Система, чтение и запись

19- Система, чтение

20- Администратор, чтение, особые разрешения

21- Интерактивные пользователи, чтение, полный доступ

22- Интерактивные пользователи, чтение

23- Интерактивные пользователи, чтение, особые разрешения

0 - Нет групп или пользователей, имеющих разрешение на доступ к данному объекту, но владелец объекта может назначить разрешения.

можно дополнительно задавать несколько незадокументированных:
Кликните здесь для просмотра всего текста

24 - ИНТЕРАКТИВНЫЕ, Запрос значения, Задание значения, Создание подраздела, Перечисление подразделов, Уведомление, Удаление, Чтение разрешений

25 - Пользователи, Запрос значения, Задание значения, Создание подраздела, Перечисление подразделов, Уведомление, Чтение разрешений

26 - ПОЛЬЗОВАТЕЛЬ СЕРВЕРА ТЕРМИНАЛОВ, Полный доступ

27 - ПОЛЬЗОВАТЕЛЬ СЕРВЕРА ТЕРМИНАЛОВ, Запрос значения, Перечисление подразделов, Уведомление, Чтение разрешений

28 - ПОЛЬЗОВАТЕЛЬ СЕРВЕРА ТЕРМИНАЛОВ, Запрос значения, Задание значения, Создание подраздела, Перечисление подразделов, Уведомление, Чтение разрешений

29 - ПОЛЬЗОВАТЕЛЬ СЕРВЕРА ТЕРМИНАЛОВ, Запрос значения, Задание значения, Создание подраздела, Перечисление подразделов, Уведомление, Удаление, Чтение разрешений

30 - Пользователи, Запрос значения, Перечисление подразделов, Уведомление, Чтение разрешений

31 - Опытные пользователи, Запрос значения, Перечисление подразделов, Уведомление, Чтение разрешений

39 - Наследовать разрешения
1
15.05.2019, 00:36
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2019, 00:36

Как скрипты видят другие скрипты, которые были объявлены ранее?
Может кто-нибудь объяснить как реализовано то, что у нас скрипт, который был заинклуден в html...

Редкие программы
тема и тупая, но в институте задали такой вопрос: какие программы считаются редкими,привести их...

Редкие отключения и сбои ПК
Добрый день! Около 4-ех месяцев назад поменял процессор с i3-3225 на i5-3450 и появились редкие...


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

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

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