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

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

16.10.2012, 06:56. Показов 239644. Ответов 96

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

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

96
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 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
18025 / 7728 / 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
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
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
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 16:46  [ТС]
FraidZZ, шикарно. Все строки хранятся в одной переменной (не массиве).
Хотелось бы подробно разобрать этот пример здесь: Обсуждение сложных кодов, команд и синтаксиса*
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
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
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
16.01.2014, 03:44  [ТС]
Как работают маски в MS-DOS
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.01.2014, 23:22  [ТС]
Почему CMD-шная %RANDOM% не является столь рандомной. (Raymond Chen)
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 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
18025 / 7728 / 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
18025 / 7728 / 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
1780 / 762 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
15.04.2014, 13:57
Dragokas, не сработала "фишка" с короткими именами (WinXP, перезагрузку делал)
Миниатюры
Тонкости языка, редкие команды и сложные скрипты  
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.04.2014, 14:01  [ТС]
Спасибо. Еще дома проверю. Если ничего не получится, снесу пост.
Автор об этом писал во времена Windows NT.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.05.2014, 21:59  [ТС]
Правила парсинга математики в CMD (глобальное исследование) by Dave Benham & dostips team (англ.).
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 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
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.07.2014, 17:46  [ТС]
Увеличение количества токенов FOR до 64.

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

Дочитал до средины. Как будет время - переведу.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 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
18025 / 7728 / 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
18025 / 7728 / 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
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.08.2014, 00:14  [ТС]
WMIC и лишние символы CR - обсуждение dostips.
1
1780 / 762 / 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
Ответ Создать тему
Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »