Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/1178: Рейтинг темы: голосов - 1178, средняя оценка - 5.00
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16

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

16.10.2012, 06:56. Показов 243802. Ответов 97

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

Здесь можете размещать:
  • Ваши статьи;
  • Ссылки на другие статьи (допускаются статьи на английском языке);
  • Редкие ошибки, выдаваемые интерпретатором, способы их устранения/либо причины возникновения.
  • Недокументированные и особые трюки работы с файловой системой, устройствами и т.п.
  • Разрешено обсуждение выложенных здесь материалов (в последствии будут выделены в отдельную тему);
  • Запрещено обсуждение новичками проблем работы с 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) в переменную эта тема
  • Получение символов CR (0x0D) и LF (0x0A) в переменную этот пост
  • Функция для работы с массивами эта тема
  • Считывание файла в псевдомассив с учетом пустых строк эта тема
  • Функция правильного выравнивания текста по знакам табуляции эта тема
  • Способ передачи в бат-файл параметра содержащего символы & и последующей обработки полученного значения эта тема
Циклы
  • Подстановка переменной в роле модификатора для цикла эта тема
  • Разбиение строки на токены, если разделитель - кавычка эта тема
Файловые операции
  • Объединить 2 файла (сохранив результаты в одном из них) эта тема
  • Получение информации о размере папки эта тема

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

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


Если у Вас возникли вопросы, создайте новую тему.
17
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2012, 06:56
Ответы с готовыми решениями:

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

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

Команды языка PCL
Люди добрые! Подскажите пожалуйста, что написать в конфигурационном файле sets.txt, чтобы принтер hp2200 делал отступ слева на...

97
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.10.2013, 18:15  [ТС]
Студворк — интернет-сервис помощи студентам
Способ обращениям к разным веткам JS-скрипта, упакованного в батник

Демонстрируются функции:
1) повышения привилегий
2) Имитация MSGBOX (Popup) с отработкой вариаций нажатой клавиши
3) запуска с сокрытием окна

Кликните здесь для просмотра всего текста
Bash
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
@set @x=0; /*
@echo off
SetLocal EnableExtensions
chdir /d "%~dp0"
 
:: повышение привилегий
if /i "%~1" neq "Admin" ver | find "6." && cscript.exe //nologo //e:jscript "%~f0" "Run" "Admin"& Exit
 
::вызов MSGBOX 
call :msgbox " Архив SITLog поврежден.\n Хотите скачать его еще раз?" YesNo
if errorlevel 1 (
  ;;; echo Запускаю wget сокрытом режиме...
  cscript.exe //nologo //e:jscript "%~f0" "Run" "Hide" "wget -N -P ^"here^" http://tools.safezone.cc/glax24/SIT/SITLog.7z"
) else (
  ;;; echo Вы выбрали "Нет"
)
pause
Exit /B
 
:msgbox [Сообщение] [Вид кнопок - YesNo или OK]
:: JS-имитация окна MSGBOX с возвратом кода ошибки при нажатой клавише: 0 - Нет, 1 - Да]
  if /i "%~2"=="YesNo" (set ButtonConst=36) else (set ButtonConst=64)
  for /f %%a in ('cscript.exe //nologo //e:jscript "%~f0" "Msgbox" "%~1" "%ButtonConst%"') do set msg_err=%%a
  if "%msg_err%"=="6" set "msg_retCode=1"
  if "%msg_err%"=="7" set "msg_retCode=0"
Exit /B %msg_retCode%
 
*/switch (WScript.Arguments(0)) {
  case "Run":
  {
    switch (WScript.Arguments(1)) 
    {
      case "Admin": {
        new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
        break;
      }
      case "Hide": {
        new ActiveXObject('WScript.Shell').Run (WScript.Arguments(2),0,false);
        break;
      }
    }
  }
  case "Msgbox": {
    WScript.Echo (new ActiveXObject('WScript.Shell').Popup (WScript.Arguments(1).replace(/\\n/g,'\n'),-1,'',+WScript.Arguments(2)));
    break;
  }
}
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.11.2013, 20:04  [ТС]
Демонстрация комбинированного BAT-HTA файла.

Копирование в буфер обмена аргументов запуска батника
от Dragokas

Кликните здесь для просмотра всего текста
Bash
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
@echo off&:: <!--
SetLocal
echo Копирование в буфер аргументов запуска батника
echo Заданы аргументы: %*
 
"%windir%\system32\mshta.exe" "%~f0" %*
 
echo Готово.& echo.
pause
goto :eof
 
//-->
<html>
    <head>
    <HTA:APPLICATION
        ID="objHTA"
        WindowState="minimize"
        ShowInTaskbar="yes"
    />
    </head>
<script language="VBScript">
<!--
Sub Window_onLoad()
    comm = objHTA.CommandLine
    document.parentwindow.clipboardData.SetData "text", mid(comm, instr(2, comm, """") + 2)
    window.close()
End Sub
//-->
</script>
</html>


Способ от ComSpec:

Bash
1
2
3
4
5
6
7
8
9
@echo off
chcp 1251>nul
set "string="Hello, World!" & Hello, Алекс aka Dragokas!"
set "string=%string:"=~!@#$%"
set "string=%string: =$#@!~%"
for /f "delims=" %%i in ("%string%") do (
 mshta "vbscript:document.parentwindow.clipboardData.SetData("text",replace(replace("%%i","~!@#$",chr(34)),"$#@!~%",chr(32)))&close()"
)
exit /b
5
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.11.2013, 14:13
Считывание файла в переменную с учетом переносов строк (SIC!)
Код
Bash
1
2
3
4
5
6
7
8
9
10
11
:ReadTo
set _m=^
 
 
 
::Не удаляем пустые строки выше!!!
for /f "usebackq tokens=*" %%A IN (`find /C /V ""^<"%~1"`) DO (set _cn=%%A)
(for /L %%A IN (1 1 !_cn!) DO (set "_fa="&set /p "_fa="&set %~2=!%~2!!_fa!!_m!))<"%~1"
set %~2=!%~2:~0,-1!
(set _cn=&set _fa=&set _m=)
exit /b

Требования к окружениюДолжно быть включено отложенное раскрытие переменных (команда setlocal enabledelayedexpansion)

Синтаксис
Bash
1
call :ReadTo <Имя файла> <Имя переменной>

Пример
some.txt

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
 
 
8
9
10
 1
2

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
setlocal enabledelayedexpansion
set file=some.txt
call :ReadTo "%file%" fc
echo.!fc!
::echo.%fc% - не работает! Все переменные с CRLF можно раскрывать только через "!"
pause>nul
exit /b
:ReadTo
set _m=^
 
 
 
::Не удаляем пустые строки выше!!!
for /f "usebackq tokens=*" %%A IN (`find /C /V ""^<"%~1"`) DO (set _cn=%%A)
(for /L %%A IN (1 1 !_cn!) DO (set "_fa="&set /p "_fa="&set %~2=!%~2!!_fa!!_m!))<"%~1"
set %~2=!%~2:~0,-1!
(set _cn=&set _fa=&set _m=)
exit /b
Вывод консоли
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
 
 
8
9
10
 1
2

2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 16:46  [ТС]
FraidZZ, шикарно. Все строки хранятся в одной переменной (не массиве).
Хотелось бы подробно разобрать этот пример здесь: Обсуждение сложных кодов, команд и синтаксиса*
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
25.11.2013, 15:30
В качестве логического продолжения:
Bash
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
@echo off
setlocal enabledelayedexpansion
set table=ABCD\nEFGH\nIJKL\nMNOP\nQRST\nUVWX\nYZ
call :parse table table_
echo.!table_!
pause>nul
exit /b
:parse
set _CR=^
 
 
set _T=!%~1!
set _a=0
:again_
 if "!_T:~%_a%,1!"=="" goto out_
 if "!_T:~%_a%,2!"=="\n" (
  set %~2=!%~2!!_CR!
  set /a _a=%_a%+1
 ) else (
  set %~2=!%~2!!_T:~%_a%,1!
 )
 set /a _a=%_a%+1
goto again_
:out_
exit /b
Парсинг переменной с \n в переменную с CRLF
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
16.01.2014, 03:44  [ТС]
Как работают маски в MS-DOS
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.01.2014, 23:22  [ТС]
Почему CMD-шная %RANDOM% не является столь рандомной. (Raymond Chen)
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.02.2014, 22:20  [ТС]
Почему FIND и FINDSTR имеют несвязанный набор функций. (англ. - Raimond Chen)

Добавлено через 14 минут
Почему
Bash
1
for /f "usebackq delims=" %i in (`dir /ahd/b`) do @echo %i
и
Bash
1
dir /ahd/b
могут давать разный вывод?

Ответ здесь:
Скрытый трюк: настройка AutoRun командного процессора (англ. - Raimond Chen)
3
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.04.2014, 02:25  [ТС]
Запущена ли Windows в безопасном режиме?

Bash
1
2
3
if not Defined SAFEBOOT_OPTION echo Тут нифига не безопасно !!!
if /i "%SAFEBOOT_OPTION%"=="Minimal" echo Безопасный режим (с поддержкой командной строки или без таковой).
if /i "%SAFEBOOT_OPTION%"=="Network" echo Безопасный режим с загрузкой сетевых драйверов.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.04.2014, 13:04  [ТС]
Длинные имена файлов и каталогов в ДОС

Как известно, длинные имена файлов и каталогов в ДОС записываются сами знаете в каком виде (например Длинный файл.txt запишется как ДЛИННЫ~1.TXT). Однако не всегда в этом есть необходимость, а иногда это просто неудобно. Например, если в одном каталоге находятся Norton Commander, Norton Utilities, Norton Navigator, Norton Crash Guard, (что там еще у Нортона есть), то в ДОСвском NC это будет выглядеть как:
  • NORTON~1
  • NORTON~2
  • NORTON~3
  • NORTON~4
что, согласитесь, не очень-то информативно. А можно сделать, чтобы по-умолчанию имя записывалось длиной в 8 символов, и только при необходимости добавлялась тильда. То есть так:
  • NORTONCO
  • NORTONCR
  • NORTONNA
  • NORTONUT
по крайней мере, ясно, где что. И только если появится еще, скажем Norton Utilities 2.0, то появится запись NORTON~1.

А делается это очень просто. Открываем HKEY_LOCAL_MACHINE\System\CurrentControl Set\control\FileSystem ,
находим двоичный параметр NameNumericTail (а скорее -- не находим, ибо по умолчанию его нет; тогда создаем) и устанавливаем его значение как
'00 00 00 00'. И все. После перезагрузки упомянутый выше Длинный файл.txt можно будет записать как ДЛИННЫЙФ.TXT

Источник
2
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
15.04.2014, 13:57
Dragokas, не сработала "фишка" с короткими именами (WinXP, перезагрузку делал)
Миниатюры
Тонкости языка, редкие команды и сложные скрипты  
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.04.2014, 14:01  [ТС]
Спасибо. Еще дома проверю. Если ничего не получится, снесу пост.
Автор об этом писал во времена Windows NT.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.05.2014, 21:59  [ТС]
Правила парсинга математики в CMD (глобальное исследование) by Dave Benham & dostips team (англ.).
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.06.2014, 14:21  [ТС]
Подсчет CRC32 ver. 0.1c
Автор: einstein1969

Синтаксис:
CRC32 <строка|файл> [<переменная>]

Подсчитывает CRC32 переданной строки или файла.
Опционально: записывает результат в переменную.

Кликните здесь для просмотра всего текста

Bash
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: CRC32 version 0.1c by einstein1969.
:: ----------------------------------------------------------------
::
:: Thanks to: penpen, Magialisk, jeb, dbenham, foxidrive
::
:: 19/06/2014 ver. 0.1c
::            - Tuning performance. Doubled the speed.
::            - Fixed filename with ! bug.
::            - Other code optimization.
::   
:: TODO: Async Mode with pipe and SET/P read.
::
:: Rif: [url]http://www.dostips.com/forum/viewtopic.php?p=30336#p30336[/url]
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
@echo off & setlocal DisableDelayedExpansion
 
:: Show Syntax
if "%~1"=="" (
  echo(
  echo CRC32 ^<string^|filename^> [^<variable^>]
  echo       Calculates the CRC32 of the input string or file.
  echo       Optionally stores it in "variable".
  echo(
  echo Example:
  echo CRC32 "123456789"
  Echo CRC32:0xCBF43926
  exit /b
)
 
set "inFile=%~1"
 
setlocal EnableDelayedExpansion
 
:: String MODE
IF not exist !inFile! (
   set SM=1
   <nul set /p ".=%inFile%" > "%temp%\crc32.tmp"
   call "%~f0" "%temp%\crc32.tmp" %~2
   del "%temp%\crc32.tmp"
   :: Pass the result back over the second endlocal barrier
   if Not "%~2"=="" for %%a in (!crc32!) DO (endlocal & endlocal & set %~2=%%a)
   exit /b
)
 
:: create dummy file (of @=40Hex) of dim %~Z1 for compare with FC. Jeb's technique.
set "$t=%temp%\crc32_$$$.tmp"
set "$t2=%temp%\crc32_$$$2.tmp"
type nul > "!$t2!"
<nul > "!$t!" set /p ".=@"
set "ds=%~z1"
for /l %%n in (1,1,32) do (
  set /a "r=ds %% 2, ds/=2"
  if !r! equ 1 type "!$t!" >> "!$t2!"
  if !ds! gtr 0 type "!$t!" >> "!$t!"
)
set ds=%~z1
 
:: Compare and write to tmp file
if !ds! gtr 50000 echo Wait...
>"!$t!" fc /B "!inFile!" "!$t2!"
 
:: Prepare progress bar
set "L0=_" & set "L1=°" & set "L2=±" & set "L3=²" & set "L4=Û"
for /L %%l in (0,1,4) do for /L %%c in (0,1,49) do set L%%l=!L%%l!!L%%l:~0,1!
 
:: prepare for fast execute
setlocal
(
for /F "Tokens=1 delims==" %%v in ('set') do set "%%v="
for /f %%a in ('copy /Z "%~f0" nul') do set "_CR=%%a"
 
:: Init b=CRC
set /a b=0xFFFFFFFF
 
>"%temp%\time_t0.tmp" echo %time%
 
:: Scan tmp file
set /a I=1
for /F "usebackq skip=1 tokens=1,2 delims=: " %%b in ("%$t%") do (
 
  :: Fill gaps
  for /L %%B in (!I!, 1, 0x%%b) do (
    set /a "a=(b ^ 0x40) & 0xff"
    for /L %%i in (0,1,7) do set /a "a=((a>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * (a & 1))"
    set /a "b = ((b >> 8)&0x00FFFFFF) ^ a"
  )
 
  :: CRC core calculation
  set /a "a=((((b ^ 0x%%c) & 0xff)>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * ((b ^ 0x%%c) & 1)), a=((a>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), a=((a>>1)&0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), a=((a>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), a=((a>>1)&0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), a=((a>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), a=((a>>1)&0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), a=((a>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * (a & 1)), b = ((b >> 8)&0x00FFFFFF) ^ a, I=0x%%b+2"
 
  :: Progress bar.
  if "!i:~-4!"=="0000" call :progress %ds% "%temp%\time_t0.tmp" %L0% %L1% %L2% %L3% %L4%
)
 
:: Final Bytes/gap
for /L %%B in (!I!, 1, %~z1) do (
  set /a "a=(b ^ 0x40) & 0xff"
  for /L %%i in (0,1,7) do set /a "a=((a>>1) & 0x7FFFFFFF) ^ (0xEDB88320 * (a & 1))"
  set /a "b = ((b >> 8)&0x00FFFFFF) ^ a"
)
 
:: Progress bar. Final
if %ds% gtr 10000 (set I=%~z1 & call :progress %ds% "%temp%\time_t0.tmp" %L0% %L1% %L2% %L3% %L4%)
 
)
endlocal & set b=%b%
 
:: Final operations
set /a "CRC32=b ^ 0xffffffff"
 
:: Convert to Hexdecimal
call cmd /c exit /b !CRC32!
set crc32=!=ExitCode!
 
:: Print out result.
echo(
echo CRC32:!CRC32!
 
:: If requested return into variable.
IF NOT "%~2"=="" IF !SM! equ 1 (endlocal & endlocal & set CRC32=%CRC32%) else (endlocal & endlocal & set %~2=%CRC32%)
exit /b
 
:progress
(   set "t1=!time!" & set/p "t0=" <"%~2"
    for /F "tokens=1-8 delims=:.," %%a in ("!t0: =0!:!t1: =0!") do set /a "a=(((1%%e-1%%a)*60)+1%%f-1%%b)*6000+1%%g%%h-1%%c%%d, a+=(a>>31) & 8640000"
    set /a "max=%1, parz=max/4, k=i/parz, n=k+1, rapp=(i-k*parz)*50/parz, d=50-rapp, vel=I*100/a, pt=I*100/max"
    set L0=%3&set L1=%4&set L2=%5&set L3=%6&set L4=%7&set L5=%7
    for %%k in (!k!) do set LL0=!L%%k!
    for %%n in (!n!) do set LL1=!L%%n!
    for %%r in (!rapp!) do for %%d in (!d!) do <nul set /p "=^<!LL1:~0,%%r!!LL0:~0,%%d!^> !pt!%% - !vel!B/s  !_CR!"
    for /F "Tokens=1 delims==" %%v in ('set') do if /I not "%%v"=="I" if /I not "%%v"=="b" if /I not "%%v"=="_CR" set "%%v="
exit /b )

Вложения
Тип файла: rar crc32.rar (1.9 Кб, 42 просмотров)
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.07.2014, 17:46  [ТС]
Увеличение количества токенов FOR до 64.

http://stackoverflow.com/quest... 93#8520993

Дочитал до средины. Как будет время - переведу.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.07.2014, 15:12  [ТС]
Комбинированный скрипт cmd / Powershell / VB.NET / C# / JS.Net (все в одном

Автор: Liviu (dostips.com)

Кликните здесь для просмотра всего текста

Bash
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
<# :: --------------------------------------------------------------- .cmd ----
@echo off & setlocal & echo .cmd
 
set "ps=" & for %%X in (powerShell.exe) do (
  set "ps=%%~$PATH:X")
if not defined ps (
  set "ps=%systemRoot%\system32\windowsPowerShell\v1.0\powerShell.exe")
 
set "psArg1=.cmd ->"
<"%~f0" "%ps%" -ExecutionPolicy bypass -NoProfile -Command -
 
endlocal & goto :eof & rem ------------------------------------------ .ps1 --#>
 
param($psArg1 = $env:psArg1)
 
# -------------------------------------------------------------------- .cs ----
$CS = @" 
namespace PS {
  public class CS
  {
    public static void csEcho(string arg)
    { System.Console.WriteLine(arg + " .cmd.ps.cs"); }
  }
}
"@
 
# -------------------------------------------------------------------- .vb ----
$VB = @" 
Namespace PS
  Public Class VB
    Public Shared Sub vbEcho(ByVal arg as String)
      System.Console.WriteLine(arg & " .cmd.ps.vb")
    End Sub
  End Class
End Namespace
"@
 
# -------------------------------------------------------------------- .js ----
$JS = @" 
import System;
package PS
{
  public class JS
  {
    public static function jsEcho(arg : String)
    { System.Console.WriteLine(arg + " .cmd.ps.js"); }
  }
}
"@
 
# ------------------------------------------------------------------- .ps1 ----
 
Add-Type -TypeDefinition $CS -Language CSharp
Add-Type -TypeDefinition $VB -Language VisualBasic
Add-Type -TypeDefinition $JS -Language JScript
 
Write-Output($psArg1 + " .cmd.ps")
 
[PS.CS]::csEcho($psArg1 + " .cmd.ps ->")
[PS.VB]::vbEcho($psArg1 + " .cmd.ps ->")
[PS.JS]::jsEcho($psArg1 + " .cmd.ps ->")
 
exit 0  # ---------------------------------------------------------------------
4
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.07.2014, 00:13  [ТС]
Надежная проверка наличия прав администратора (promted UAC)

Спасибо Compo (dostips.com)

Bash
1
net session 2>NUL 1>&2 && (echo Ты прав) || (echo Нет прав)
Еще один способ от Dos_Probie
Попытка доступа к системной ветке реестра: NT AUTHORITY\LOCAL SERVICE

Bash
1
reg query "HKU\S-1-5-19" >NUL 2>&1 && (echo Ты прав) || (echo Нет прав)
6
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
18.07.2014, 19:49  [ТС]
Еще один способ от меня:

Bash
1
2
set "Priv=OK" & ver |>NUL find /v "5." && WHOAMI /PRIV |>NUL find /i "SeTakeOwnershipPrivilege" || set "Priv=BAD"
echo Ваши права: %Priv%
Здесь сначала предполагается, что права есть.
Дальше проверяется версия ОС.
Если она выше XP / Server 2003, то идет дополнительная проверка:
получаем перечень привилегий. Если в списке привилегий
нет SeTakeOwnershipPrivilege, считает, что проверка на права провалилась.

Перечень прав пониженного в правах администратора.



Перечень прав прошедшего проверку:



Переводчик, похоже, что PROMT
Миниатюры
Тонкости языка, редкие команды и сложные скрипты   Тонкости языка, редкие команды и сложные скрипты  
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.08.2014, 00:14  [ТС]
WMIC и лишние символы CR - обсуждение dostips.
1
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
01.11.2014, 18:03
Выявил для себя нюанс использования штатной команды распаковки обновлений. Если набрать
Code
1
2
if not exist c:\3 md c:\3
ogl2010-kb2863942-fullfile-x86-glb.exe  /quiet /extract:c:\3
к дате изменения файла добавляется время часового полюса пользователя. В частности у меня дата 14.05.2014 23:36 меняется на 15.05.2014 03:36

Обсуждение в этой теме: https://www.cyberforum.ru/wind... 92179.html
Вложения
Тип файла: 7z ogl2010-kb2863942-fullfile-x86-glb.7z (1.09 Мб, 18 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2014, 18:03
Помогаю со студенческими работами здесь

Логические команды языка Ассемблер
Всем привет. Тема: Изучение группы логических команд. Задание: Дано состояние 24 двоичных позиционных датчиков, сигнализирующих...

Создать команды языка управления потоками
Создайте команды языка управления потоками для каждого из следующих случаев: а. Если средний status (статус) здания больше 1, то...

сложные зад4чи, парсинг, компиляторы, автоматическое преобразование исходника, сложные Regex
специализируюсь на работе со всякого рода парсингом и автоматическим форматированием/переписыванием. Имею опыт написания и использования...

Правило перевода на язык паскаль команды повторения с параметром алгоритмического языка?
Сформулируйте правило перевода на язык паскаль команды повторения с параметром алгоритмического языка?

Используя команды языка пакетного файла, реализовать текстовое меню из 4-х пунктов
Используя команды языка пакетного файла , реализовать текстовое меню из 4 пунктов , при выборе от 1 до 3 пункта ссылки на файлы и сделать...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru