Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 4.00
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
#1

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

16.10.2012, 06:56. Просмотров 127825. Ответов 94

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

Здесь можете размещать:
  • Ваши статьи;
  • Ссылки на другие статьи (допускаются статьи на английском языке);
  • Редкие ошибки, выдаваемые интерпретатором, способы их устранения/либо причины возникновения.
  • Недокументированные и особые трюки работы с файловой системой, устройствами и т.п.
  • Разрешено обсуждение выложенных здесь материалов (в последствии будут выделены в отдельную тему);
  • Запрещено обсуждение новичками проблем работы с 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 06:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Тонкости языка, редкие команды и сложные скрипты (CMD/BAT):

После выполнения определённой команды не выполняются последующие команды - CMD/BAT
Объясните, пожалуйста, почему может останавливаться выполнение второй и далее комманд? cd C:\Users\alex_iv\Desktop\test_node\ node...

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

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

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

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

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

94
Charles Kludge
Клюг
7641 / 3156 / 366
Регистрация: 03.05.2011
Сообщений: 8,382
22.01.2013, 20:24 #16
Undocumented Dynamic variables (read only)

%__CD__% текущий каталог, с бэкслэшем'\' в хвосте;

%=C:% Текуший каталог на диске C:

%=D:% Текуший каталог на диске D:,E:,F:...(буковку подставите), если к нему было обращение в текущем сеансе CMD.EXE

%=ExitCode% Шестнадцатеричное значение кода возврата по EXIT /B

%=ExitCodeAscii% Символьное (ASCII) представление кода возврата по EXIT /B (допускается код в пределах от 32 до 126).
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
echo %__CD__%
echo %=C:%
set "decimal=%1"
cmd /c exit /b  %decimal%
echo ASCII(как символ) exitcode: %=ExitCodeAscii%
echo Hex exitcode: %=ExitCode%
pause
6
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
22.01.2013, 22:41  [ТС] #17
Клас
0
Миниатюры
Тонкости языка, редкие команды и сложные скрипты  
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
23.01.2013, 02:24  [ТС] #18
Переключение языка команд консоли на английский

Тема: Английский язык в командной строке
0
Eva Rosalene
Male-to-Female
4049 / 1586 / 242
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 1
03.02.2013, 14:16 #19
Экранировать восклицательный знак.
Если у вас в программе используется
Bash
1
setlocal enabledelayedexpansion
, то наверняка вставала проблема, как экранировать восклицательный знак, например, для вывода на экран. Стандартным способом он не экранируется, поскольку, скорее всего, раскрывается 2 раза.
Как экранировать:
Bash
1
^^^!
Итак, первый "^" экранирует второй "^", а третий "^" - экранирует сам восклицательный знак первый раз. Во второй раз остаются только "^"(второй) и "!", после чего "!" экранируется.
Bash
1
2
3
4
5
@echo off
setlocal enabledelayedexpansion
echo ^^^!
pause>nul
exit /b
А в кавычках он экранируется так:
Bash
1
set "$=^!"
Также его можно записать в переменную такой строкой:
Bash
1
(set $=^^^!)
и подставлять в нужном месте (даже в кавычках) как !$!
5
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
19.03.2013, 02:08  [ТС] #20
Деление через строковую математику
Отличие от встроенного в CMD деления: исходное число (делимое) может превышать границу для числового типа данных CMD
(актуально для Гигабайтов данных, представленных в виде байтов, для дальнейшего перевода в более удобо-читаемую единицу измерения).

Кликните здесь для просмотра всего текста
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
@echo off
SetLocal EnableDelayedExpansion
::Делимое
set Num1=16261316608
::Делитель
Set Num2=1024
::Макс. кол-во знаков после запятой в результате
Set MaxZ=2
 
 
set /a Num1_pos=-1
 
:AddNum1
set /a Num1_pos+=1
::если строка закончилась
if "!Num1:~%Num1_pos%,1!"=="" Goto AfterZiro
Set Num1_part=%Num1_part%!Num1:~%Num1_pos%,1!
if %Num1_part%==00 Set Num1_part=0
Call :TryDiv
Goto AddNum1
 
:AfterZiro
if %Num1_part%==0 goto Div_End
if %MaxZ% neq 0 Set ResultAll=%ResultAll%.
Set Zero_Marker=true
 
:AddZiro
Set /A MaxZ-=1
if %MaxZ% LSS 0 Goto Div_End
echo %Num1_part%
if %Num1_part%==0 goto Div_End
Set Num1_part=%Num1_part%0
Call :TryDiv
Goto AddZiro
 
:Div_End
echo %ResultAll%
 
pause
Goto :eof
 
:TryDiv
Set /a Result=Num1_part / Num2
echo %Num1_part%-%result%
if %Result% neq 0 (
  Set ResultAll=%ResultAll%%Result%
  Set /A Num1_part=Num1_part - Result * Num2
) else (if "%ResultAll%" neq "" if not Defined Zero_Marker Set ResultAll=%ResultAll%0)
Exit /B


Пример довольно прямолинеен, и не оптимизирован. Зато работает верно, надеюсь Просьба - протестировать с разными числами.
Позже будет время - причешу.
4
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
25.03.2013, 03:42  [ТС] #21
Получить последний токен в заданной строке.
(подпрограмма)
%1 - значение строки
%2 - разделитель в кавычках
%3 - переменная-буфер
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
::Получает значение последнего токена в строке, отделенного в тексте указанным разделителем
::Имеет преимущество перед другими парсерами:
:: - разделителями могут быть некоторые спецсимволы, например знак "=";
:: - количество токенов неограничено.
:GetLastToken %1-in.String %2-in.Delimiter %3-out.Last.Token.Variable
Set "%~3="
Set "_String=%~1"
Set _nLastDelim=-1
for /L %%C in (0,1,8184) do (
  if "!_String:~%%C,1!"=="" Goto ex_GetLastToken
  if "!_String:~%%C,1!"=="%~2" Set _nLastDelim=%%C
)
:ex_GetLastToken
Set /A _nLastDelim+=1
Set "%~3=!_String:~%_nLastDelim%!"
Exit /B
Более простой вариант:
Bash
1
2
3
4
5
@echo off
set st=C:\Users\Fire\Desktop\Личный кабинет абонента.url
set "st="%st:\=" "%""
for %%a in (%st%) do set st=%%~a
echo %st%
Урезать в строке справа лишние пробелы или другие подряд идущие символы
(подпрограмма)
%1 - значение строки
%2 - символ (например, пробел, окруженный кавычками)
%3 - переменная-буфер
Bash
1
2
3
4
5
6
7
8
9
10
11
::Удаляет справа лишние пробелы, или другие подряд идущие символы, заданные переменной %2 (Symbol)
:RTrimSpaces %1-in.String %2-in.Symbol %3-out.String.Variable
Set "%~3="
Set "_String=%~1"
for /L %%C in (0,1,8184) do (
  if "!_String:~%%C,1!"=="" Goto ex_RTrimSpaces
  if "!_String:~%%C,1!"=="%~2" (if not Defined LastSpace (Set nSpace=%%C& Set LastSpace=true)) else (Set LastSpace=& Set nSpace=)
)
:ex_RTrimSpaces
if Defined nSpace (Set "%~3=!_String:~0,%nSpace%!") else (Set "%~3=!_String!")
Exit /B
0
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
07.04.2013, 18:44  [ТС] #22
Получение символов BackSpace (0x08) и Esc (0x27) в переменную
Автор: jeb (dostips.com)
(немного подредактировано мной)
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
:BL.String.CreateDEL_ESC
@echo off
:: Creates two variables with one character DEL=Ascii-08 and ESC=Ascii-27
:: DEL and ESC can be used  with and without DelayedExpansion
setlocal
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%A in (1) do rem"') do (
  rem ENDLOCAL
  set "DEL=%%a"
  rem set "DEL=%DEL:~0,1%
  set "ESC=%%b"
  goto ext
)
:ext
<nul set /p test=Tes_
<nul set /p test=%DEL%
echo t
0
Eva Rosalene
Male-to-Female
4049 / 1586 / 242
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 1
17.04.2013, 22:13 #23
Перевод чисел из десятеричной системы в любую (2-16)

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
@echo off
::Первый параметр - число в десятичное системе счисления.
::Второй параметр - основание выходной системы счисления (от 2 до 16)
setlocal enabledelayedexpansion
chcp 1251>nul
set dec=%~1
if not "%~2"=="" (set osn=%~2) else (set osn=2)
if !dec! LSS 0 (set /a dec=0 - !dec!&set mn=1)
set tempr=!dec!
set bin=
set H=set HEX.
!H!10=A&!H!11=B&!H!12=C&!H!13=D&!H!14=E&!H!15=F
if !osn! GTR 16 (echo.Слишком большое основание. Максимум 16&exit /b)
if !osn! LSS 2 (echo.Слишком маленькое основание. Минимум 2&exit /b)
:again
 if !tempr! LSS 2 (goto :out)
 set /a tbin=!tempr! %% !osn!
 set /a tmchs=!tempr! - !tbin!
 set /a tempr=!tmchs! / !osn!
 if !tbin! GEQ 10 (set tbin=!HEX.%tbin%!)
 set bin=!tbin!!bin!
goto :again
:out
if "!bin!"=="" (set bin=0)
if not !tempr!==0 (set bin=!tempr!!bin!)
if "!mn!"=="1" (set bin=-!bin!)
echo.!bin!
endlocal&exit /b
1
Smitis
1628 / 337 / 39
Регистрация: 15.10.2012
Сообщений: 529
01.05.2013, 01:52 #24
Уточнение 3961893
Цитата Сообщение от Dragokas Посмотреть сообщение
В конец результирующего файла помещает управляющий символ (&1A) вместо переноса каретки
Есть ключи /a и /b для копирования, соответственно, текстовых и бинарных файлов. При копировании с ключом /a в конец результирующего файла всегда добавляется символ с кодом &1A (это управляющий символ EOT - End Of Text). Кроме того, текстовые файлы будут обрезаны до символа EOT, если он в них встретится. Бинарные файлы копируются "as is". Без ключей /a и /b команда copy включает некий AI, пытаясь определить текстовый файл или бинарный. Результаты этого AI не всегда адекватны. Поэтому, хорошей привычкой может быть всегда использовать ключ /b, даже при копировании текстовых файлов (дабы избежать появление последнего "мусорного" символа).
2
Eva Rosalene
Male-to-Female
4049 / 1586 / 242
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 1
22.06.2013, 20:26 #25
Считывание файла в псевдомассив с учетом пустых строк

Bash
1
2
3
4
:ReadTo
for /f "usebackq tokens=*" %%A IN (`find /C /V ""^<"%~1"`) DO (set %~3=%%A)
(for /L %%A IN (1,1,!%~3!) DO (set %~2.%%A=&set /p %~2.%%A=))<"%~1"
exit /b
Синтаксис:
Bash
1
Call :ReadTo <имя файла> <имя псевдомассива> <имя переменной с количеством строк>
Пример использования:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
setlocal enabledelayedexpansion
(echo.1
echo.2
echo.
echo.
echo.""
echo.x)>file.txt
call :ReadTo file.txt string counter
for /L %%A IN (1,1,%counter%) DO (echo.!string.%%A!)
pause>nul
exit /b
 
:ReadTo
for /f "usebackq tokens=*" %%A IN (`find /C /V ""^<"%~1"`) DO (set %~3=%%A)
(for /L %%A IN (1,1,!%~3!) DO (set %~2.%%A=&set /p %~2.%%A=))<"%~1"
exit /b
Несуществующие строки обнуляют переменную. Использовать с осторожностью.
0
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
22.06.2013, 21:28  [ТС] #26
Цитата Сообщение от FraidZZ Посмотреть сообщение
Bash
1
(for /L %%A IN (1,1,!%~3!) DO (set %~2.%%A=&set /p %~2.%%A=))<"%~1"
Смысл в том, что в каждую итерацию цикла попадает 1 строка, не более.
Т.е. можно и так:
Bash
1
(for /L %%A IN (1,1,!%~3!) DO set /p %~2.%%A=)<"%~1"
0
Eva Rosalene
Male-to-Female
4049 / 1586 / 242
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 1
22.06.2013, 21:34 #27
Есди ты использовал эту функцию два раза, с одним и тем же именем переменной, но пустая строка во втором совпадает с непустой в первом - твой вариант перенесет туда обрывок первого файла. А мой сначала обнулит (нет ключа /р, это просто обнуление)

 Комментарий модератора 
Ясно. Спасибо. Часть дискуссии была здесь: Как в текстовом файле удалить все строки, начиная с первой, до строки, соответствующей определенному значению?
0
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
24.06.2013, 20:27  [ТС] #28
Подстановка переменной в роле модификатора для цикла

На примере получения значений 2-х указанных токенов при парсинге строки:

Bash
1
2
3
4
5
6
7
8
9
10
:split
:: Попарное получение токенов из строки. Номера токенов задаются параметром № 2.
:: %1 - вх. строка
:: %2 - вх. номера токенов
:: %3 - вых.переменная, для хранения 1-го значения
:: %4 - вых.переменная, для хранения 2-го значения
  set "%~3="& set "%~4="
  set g=for /f "tokens=%~2" %%a in ^("%~1"^) do set "%~3=%%a"^& set "%~4=%%b"
  %g%
exit /b
Использование:

Bash
1
2
3
4
5
6
7
8
9
@echo off
::задаем строку 
set st=один два три четыре пять
::получаем 2-е и 3-е слово
call :split "%st%" "2,3" "first" "second"
::выводим на экран
echo Первое слово: %first%
echo Второе слово: %second%
pause& goto :eof
UPD. На самом деле - правильное решение это использовать отложенное раскрытие переменной,
к примеру: tokens=!num!

Еще вариант без отложенного раскрытия от ComSpec: Циклические операции и примеры (команда FOR) * [Статья]
0
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
24.06.2013, 20:28  [ТС] #29
Логические операции сравнения для чисел, превышающих арифметику CMD

Пример использования:
Bash
1
2
3
4
5
6
7
8
9
10
@echo off
SetLocal EnableExtensions
Call :Logica -2147483648 2147483648 LSS && echo false || echo true
echo errorlevel = %errorlevel%
<nul set /p x=Результат сравнения: 
if "%errorlevel%"=="0" (echo false)
if "%errorlevel%"=="1" (echo true)
if "%errorlevel%"=="2" (echo error)
pause
goto :eof
Функция:

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
:Logica
:: Логические операции сравнения для чисел, превышающих арифметику CMD
:: Возвращает Errorlevel 1, если true, или 0, если false, 2, если неверно введен параметр
:: %1 - 1-е число
:: %2 - 2-е число
:: %3 - Логическая операция.
:: Допустимые операции:
:: LSS - меньше
:: lEQ - меньше или равно
:: GTR - больше
:: GEQ - больше или равно
  set operation=%~3
  set numb1=%~1
  set numb2=%~2
  ::Удаляем знаки +
  if "%numb1:~0,1%"=="+" set numb1=%numb1:~1%
  if "%numb2:~0,1%"=="+" set numb2=%numb2:~1%
  ::Проверка на равенство
  if "%numb1%"=="%numb2%" (
    if /i "%operation%"=="lEQ" exit /B 1
    if /i "%operation%"=="GEQ" exit /B 1
    if /i "%operation%"=="lSS" exit /B 0
    if /i "%operation%"=="GTR" exit /B 0
  )
  if /i "%operation%"=="lEQ" set operation=LSS
  if /i "%operation%"=="GEQ" set operation=GTR
  ::Если сравниваются отрицательные числа, нужно в конце переворачивать логику
  set inverse=
  if "%numb1:~0,1%"=="-" if "%numb2:~0,1%"=="-" set inverse=true
  ::Проверка на знак
  if "%numb1:~0,1%"=="-" if "%numb2:~0,1%" NEQ "-" (set mean=LSS& goto :ext_Logica)
  if "%numb2:~0,1%"=="-" if "%numb1:~0,1%" NEQ "-" (set mean=GTR& goto :ext_Logica)
  ::Удаляем знаки -
  if "%numb1:~0,1%"=="-" set numb1=%numb1:~1%
  if "%numb2:~0,1%"=="-" set numb2=%numb2:~1%
  :s_Logica
    ::Берем цифры по одному разряду справа
    if "%numb1%"=="" (set r1=) else (set r1=%numb1:~-1%)
    if "%numb2%"=="" (set r2=) else (set r2=%numb2:~-1%)
    if "%r1%"=="" if "%r2%"=="" goto ext_Logica
    if "%r1%"=="" set r1=0
    if "%r2%"=="" set r2=0
    if %r1% NEQ %r2% if %r1% GTR %r2% (set mean=GTR) else (set mean=LSS)
    if "%numb1%" neq "" set numb1=%numb1:~0,-1%
    if "%numb2%" neq "" set numb2=%numb2:~0,-1%
  goto s_Logica
  :ext_Logica
  if defined inverse if "%mean%"=="GTR" (set mean=LSS) else (set mean=GTR)
  if "%operation%"=="GTR" if "%mean%"=="GTR" (exit /B 1) else (exit /B 0)
  if "%operation%"=="LSS" if "%mean%"=="LSS" (exit /B 1) else (exit /B 0)
exit /B 2
2
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
25.06.2013, 01:57  [ТС] #30
Функция правильного выравнивания текста по знакам табуляции

В связи с тем, что движок форума не поддерживает знак табуляции,
Batch-файл качаем из архива.
3
Миниатюры
Тонкости языка, редкие команды и сложные скрипты  
Вложения
Тип файла: rar Tabs.rar (518 байт, 95 просмотров)
25.06.2013, 01:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 01:57
Привет! Вот еще темы с ответами:

Lotusscript: редкие конструкции - Lotus
Здравствуйте, коллеги. Накидайте мне здесь, пожалуйста, хитрых, редких, необычных и разных экзотических конструкций на LotusScript таких,...

Частые сохранения в SQLite или редкие, но массивные? - Программирование Android
Приветствую, Пишу приложение, являющееся по своей сути онлайн-словарем. Сейчас требуется реализовать функции &quot;избранное&quot; и &quot;история&quot;....

Баннерные скрипты, скрипты посещаемости - Контекстная реклама
Всем привет,хотелось бы узнать как организовать баннерную систему у себя на сайте,такую чтобы считывала количество кликов по банеру,ставила...

Очень редкие БСОДы 0x000000D1 & 0x0000008E со ссылкой на win32k.sys - BSOD
Достаточно редкие (может раз в месяц, может раз в пару недель), но не приятные бсоды на одном компе, пользователь на работу приходит очень...


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

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

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