Показаны сообщения с ярлыком cmd. Показать все сообщения
Показаны сообщения с ярлыком cmd. Показать все сообщения

понедельник, 15 октября 2018 г.

CMD и FAR: блочное и построчное выделение текста в режиме просмотра файлов (F3)

Режим выделения фрагмента текста зависит от галочки "Включить выделение переноса строк":
- галочка включена - выделение построчное;
- галочка отключена - выделение блочное.
См. пример:

понедельник, 5 февраля 2018 г.

azk_dir_port_listing.bat

@echo off

REM date-change 2018-02-05
REM date-create 2017-10-13
REM d.aryshtaev@bftcom.com
REM Утилита предназначена для сопровожденца АЦК.
REM Она выводит на экран текстовый файл со списком портов сборок (для удобства учета портов).
REM Ее нужно поместить в папку, в которой находятся сборки АЦК.
REM При этом наименования папок сборок должны соответсвовать формату <ВерсияАЦК>_<ИдентификаторСУБД>_<ПОРТ>_<ПРОИЗВОЛЬНЫЙ ТЕКСТ>, например:
REM 2.43.2.49e_21118_OR_AZ_IRKOBL_280917
REM 2.43.2.49e_21123_OR_AZ_LENOBL_8747_181017
REM 2.43.2.66e_21107_OR_AZ_AMUROBL_8898_221017
REM 2.43.2.72e_21114_FB_USTILIMSKE_170808

set tmp_rslt_file=%TEMP%\list_ports_result.csv
set rslt_file=%TEMP%\list_ports_result.txt
if exist %tmp_rslt_file% del %tmp_rslt_file%
for /f "delims=_, tokens=3" %%a in ('dir /A:D /B') do echo %%a>>%tmp_rslt_file%
sort %tmp_rslt_file%>%rslt_file%
start %rslt_file%

пятница, 17 ноября 2017 г.

showme_webapps_url.bat

Батник открывает текстовый файл, в котором указан адрес страниц web-приложений, которые запущены текущим Tomcat (работает только локально на WEB-сервере) (положить батник нужно в корень папки Tomcat) (положить сюда:
<tomcat>/
и батник будет проверять папку
<tomcat>/webapps/
):
@echo off
setlocal EnableDelayedExpansion
set adr_begin=https://localhost:23991/
set output_file=%TEMP%\tomcat_webaddresses.txt
if exist %output_file% del %output_file%
for /F %%a in ('dir /B /A:D ..\webapps') do echo %adr_begin%%%a>> %output_file%
if exist %output_file% (start %output_file%) else (echo Папка webapps пуста && pause)

Что нужно доработать?
- Нужно реализовать автоматический анализ файла
<tomcat>/conf/server.xml
сейчас сделана "заглушка" в коде - просто вручную прописан номер порта "23991" в строке №3.
- сделать версию для Linux (когда возникнет необходимость).

вторник, 7 ноября 2017 г.

Потоки ввода-вывода

https://ru.wikipedia.org/wiki/Перенаправление ввода-вывода

Дескриптор Название Описание
0 stdin Стандартный ввод
1 stdout Стандартный вывод
2 stderr Стандартный вывод ошибок

Пример вывода только ошибок при выполнении программы:
nslookup mail.ru999 2> only_errors.txt


Спасибо Юрину В.

среда, 23 августа 2017 г.

Внешний IP-адрес из cmd

@echo off
nslookup myip.opendns.com resolver1.opendns.com > %TEMP%\myip.txt
FOR /F "skip=4 delims=: tokens=2" %%a in (%TEMP%\myip.txt) do set myipp1=%%a
FOR /F "usebackq delims= tokens=*" %%i in (`echo %myipp1%`) do set myipp2=%%i
echo %myipp2%> %TEMP%\showme_myip.txt
start notepad %TEMP%\showme_myip.txt

четверг, 17 августа 2017 г.

вторник, 15 августа 2017 г.

Прерывание команды timeout при нажатии кнопки "Развернуть" в окне cmd

Для автоматического прерывания команды timeout при нажатии кнопки "Развернуть" в окне cmd нужно отключить галочку "Использовать прежнюю версию консоли (требуется перезапуск)" на вкладке "Настройки" окна "Свойства" cmd.

Проверено на Windows 10 x64 (build 1703)

среда, 28 июня 2017 г.

(wmic) Отфильтрованный список запущенных процессов с полной информацией

Пример команды, которая создает HTML-файл "C:\proclist.htm" со списком запущенных процессов с информацией о пути к исполняемому файлу процесса и отфильтрованный по наименованию исполняемого файла (в примере это "java.exe"):
wmic /output:C:\proclist.htm process where "name='java.exe'" list full /format:htable

понедельник, 13 февраля 2017 г.

"cmd /k" вместо "& pause"

Чтобы увидеть результаты выполнения утилит командной строки (например, "ipconfig /all", "route print", "systeminfo" и т.д.) нужно, либо сначала открывать сам интерпретатор командной строки ("cmd"), либо перенаправлять вывод в текстовый файл, либо дописывать к концу команды "& pause" (но это решение помогает только если нужно увидеть результат выполнения пакетного файла).

Вариант №1
Проще давать команду интерпретатору "не закрывать консоль после выполнения команды" с помощью конструкции "cmd /k <команда>":
cmd /k ipconfig /all
cmd /k route print
cmd /k systeminfo
и т.д.

Вариант №2
У строкового параметра "(По умолчанию)" В ветках
HKEY_CLASSES_ROOT\batfile\shell\open\command
HKEY_CLASSES_ROOT\cmdfile\shell\open\command
нужно заменить значение
"%1" %*
на
cmd /k "%1" %*

пятница, 19 февраля 2016 г.

Как узнать SID пользователя Windows?

Пример запроса для локального пользователя:
wmic useraccount where name='%username%' get name,sid
Пример запроса для пользователя домена:
wmic useraccount where (name='%username%' and domain='%userdomain%') get name,sid

Редко пригождается, например, когда нужно узнать, какая ветка реестра в разделе "HKEY_USERS" принадлежит тому или иному пользователю, которому запрещено запускать regedit.

вторник, 28 апреля 2015 г.

[успешно] "SET /A" в составе цикла "FOR"

Задача:
В батнике, в составе цикла FOR команда "SET /A ..." с последующим выводом результата (внутри того же цикла "FOR") почему-то не обрабатывается.

Решение:
Для вывода результата нужно обращаться к переменной через восклицательный знак "!" (см. строку с "echo") и обязательно в режиме "ENABLEDELAYEDEXPANSION":
BAT-вариант:
SETLOCAL ENABLEDELAYEDEXPANSION
SET myCount=0
FOR /F "tokens=*" %%i in (my_list_file.txt) DO (
SET /A myCount+=1
ECHO !myCount!
)

четверг, 16 апреля 2015 г.

Запуск СП АЦК-ГЗ с предпроверкой статуса Firebird

Интересная задача попалась:
при запуске Windows-сервера с автоматическим запуском СП АЦК-Госзаказ периодически СП завершается с ошибкой:
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host "localhost"., error code: HY000
Reason: Unable to complete network request to host "localhost".
Данная ошибка возникает из-за того, что СП пытается запустится в тот момент, когда служба Firebird еще не успела запустится.

Решение: перед запуском СП проверяем состояние службы Firebird, если не запущена, то запускаем, затем стартуем СП.
BAT-вариант:

@ECHO OFF
REM Inspired by http://forum.oszone.net/nextoldesttothread-273062.html

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET daAzkPath=C:\home\soft\azk-gz-lic\1.26.0.180\
SET daAzkFile=StartServer.bat
SET daSvcName=FirebirdServerFB21
:begin
FOR /f "usebackq" %%i IN (`wmic Service where "Name='%daSvcName%'" get State /value 2^>nul ^| find /i "State"`) DO SET b%%~i
IF NOT DEFINED bState echo %daSvcName% not found &GOTO end
IF NOT %bState% == Running (SC START %daSvcName% &GOTO begin)
CD %daAzkPath%
CALL %daAzkFile%
:end
ENDLOCAL

четверг, 2 апреля 2015 г.

WMIC

WMIC - Windows Management Instrumentation Command-line.
Пример использования для получения статуса службы:

C:\>wmic Service where "Name='FirebirdServerFB25'" get State /value


State=Running

четверг, 12 февраля 2015 г.

StopServer.bat

cd .\XML &&call .\xml.cmd .\shutdown.xml
@echo off
if %ERRORLEVEL%==0 (goto mrk_ok) else (goto mrk_fail)
:mrk_ok
    rem Если команда завершения выполнилась успешно, то окно можно и закрыть по таймауту
    timeout 5
    goto end
:mrk_fail
    rem Если команда завершения выполнилась с ошибкой, то окно не закрываем, чтобы администратор мог ознакомиться с ее текстом
    pause
    goto end
:end

четверг, 18 декабря 2014 г.

StopServer.bat

cd .\XML &&call .\xml.cmd .\shutdown.xml &timeout 5

Либо Ctrl+C.

azka.bat

Пакетник для запуска клиентских частей АЦК-Ф, АЦК-П и АЦК-ГЗ

/* Метаязыком:
Если существует client\maincontroller.exe, то: если существует client\Payables.ocx (P.S. тут можно любой из 4-х ключевых файлов упомянуть: killcache.bat, CapInvest.ocx, Payables.ocx, reciprocal.ocx), то это клиентская часть АЦК-Ф,
иначе это клиентская часть АЦК-П,
Иначе, если существует client\order.exe, то это клиентская часть АЦК-ГЗ,
иначе - хз.
*/

@ECHO OFF
REM prev1 version 09.12.2015
REM prev2 version 15.10.2016
REM prev3 version 22.10.2016
REM prev4 version 03.09.2019
REM curr version 15.02.2021
SETLOCAL ENABLEDELAYEDEXPANSION
SET okstart=0
IF EXIST AzkExchange.exe (
TITLE [AZKExchange] && ECHO [AZKExchange] запускается ...
  SET okstart=1
  START AzkExchange.exe
) ELSE (
  IF EXIST client (
    IF EXIST client\maincontroller.exe (
      IF EXIST client\Payables.ocx (
TITLE [АЦК-Финансы] && ECHO [АЦК-Финансы] запускается ...
        IF EXIST client\Azk2Clnt.ini (
          FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
          SET PORT_CLNT=%%a
          )
          IF EXIST StartServer.bat (
            FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
            SET PORT_SRVR=%%a
            )
            IF "!PORT_SRVR!"=="!PORT_CLNT!" (
              SET okstart=1
              CD client
              START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
            ) ELSE (
              ECHO Выполнение прервано:
              ECHO не совпадают порты в файлах
              ECHO StartServer.bat=!PORT_SRVR!
              ECHO client\Azk2Clnt.ini=!PORT_CLNT!
              start %CD%\client\Azk2Clnt.ini
              goto exit
            )
          ) ELSE (
            ECHO Выполнение прервано: не найден файл StartServer.bat
            goto exit
          )
        ) ELSE (
          ECHO Выполнение прервано: не найден файл client\Azk2Clnt.ini
          goto exit
        )
      ) ELSE (
TITLE [АЦК-Планирование] && ECHO [АЦК-Планирование] запускается ...
        IF EXIST client\Azk2Clnt.ini (
          FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
          SET PORT_CLNT=%%a
          )
          IF EXIST StartServer.bat (
            FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
            SET PORT_SRVR=%%a
            )
            IF "!PORT_SRVR!"=="!PORT_CLNT!" (
              SET okstart=1
              CD client
              START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
            ) ELSE (
              ECHO Выполнение прервано:
              ECHO не совпадают порты в файлах
              ECHO StartServer.bat=!PORT_SRVR!
              ECHO client\Azk2Clnt.ini=!PORT_CLNT!
              start %CD%\client\Azk2Clnt.ini
              goto exit
            )
          ) ELSE (
            ECHO Выполнение прервано:
            ECHO не найден файл
            ECHO StartServer.bat
            goto exit
          )
        ) ELSE (
          ECHO Выполнение прервано:
          ECHO не найден файл
          ECHO client\Azk2Clnt.ini
          goto exit
        )
      )
    ) ELSE (
      IF EXIST client\order.exe (
TITLE && ECHO [АЦК-Госзаказ] запускается ...
        IF EXIST client\order.ini (
          FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\order.ini') DO (
          SET PORT_CLNT=%%a
          )
          IF EXIST StartServer.bat (
            FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
            SET PORT_SRVR=%%a
            )
            IF "!PORT_SRVR!"=="!PORT_CLNT!" (
              SET okstart=1
              CD client
              START order.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
            ) ELSE (
              ECHO Выполнение прервано:
              ECHO не совпадают порты в файлах
              ECHO StartServer.bat=!PORT_SRVR!
              ECHO client\order.ini=!PORT_CLNT!
              start %CD%\client\order.ini
              goto exit
            )
          ) ELSE (
            ECHO Выполнение прервано:
            ECHO не найден файл
            ECHO StartServer.bat
            goto exit
          )
        ) ELSE (
          ECHO Выполнение прервано:
          ECHO не найден файл
          ECHO client\order.ini
          goto exit
        )      ) ELSE (
        ECHO Выполнение прервано:
        ECHO подсистема не распознана
      )
    )
  ) ELSE (
ECHO Выполнение прервано:
ECHO не удалось распознать подсистему, не найдены ни каталог "client", ни файл AzkExchange.exe
  )
)
:exit
IF "%okstart%"=="1" (timeout 5) ELSE (pause)
ENDLOCAL

пятница, 7 ноября 2014 г.

Экранирование спец.символов в CMD

Экранирование спец.символов в CMD

Escape Characters
Character to be escapedEscape SequenceRemark
%%%May not always be required in doublequoted strings, just try
^^^May not always be required in doublequoted strings, but it won't hurt
&^&
<^<
>^>
|^|
'^'Required only in the FOR /F "subject" (i.e. between the parenthesis), unless backq is used
`^`Required only in the FOR /F "subject" (i.e. between the parenthesis), if backq is used
,^,Required only in the FOR /F "subject" (i.e. between the parenthesis), even in doublequoted strings
;^;
=^=
(^(
)^)
!^^!Required only when delayed variable expansion is active
"""Required only inside the search pattern of FIND
\\\Required only inside the regex pattern of FINDSTR
[\[
]\]
"\"
.\.
*\*
?\?

Архив