Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37441 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
1.

Код:
 
>nul 2>&1 net.exe session && echo Rights elevated. || echo Rights NOT elevated.
 

2. Парсить вывод diskpart.
3. http://forum.ru-board.com/topic.cgi?forum=5&topic=48565&start=980#20
Пока не поддерживаются файлы с полным путем длиннее 259 символов.
4.

Код:
 
for %%A in (%DrvLtr%) do 2>nul pushd %%A: && (popd & echo Drive %%A mounted.) || echo Drive %%A NOT mounted.
 


----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 16:46 09-09-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уточнение для п. 4:

Код:
 
for %%A in (%DrvLtr%) do (if exist %%A: (2>nul pushd %%A: && (popd & echo Drive %%A mounted.)) else call) || echo Drive %%A NOT mounted.
 


----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 14:52 10-09-2021
KiloSub



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, плз, как передать параметр с кавычками и пробелом, пример:
 
call :DelStarts "!T!"
 
так не работает.
в Т скажем  
 
"DCOM Protocols"=-
 
 и вылетает.

Всего записей: 386 | Зарегистр. 30-05-2020 | Отправлено: 14:57 10-09-2021 | Исправлено: KiloSub, 15:02 10-09-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiloSub
Приведите код, упростив его максимально.

----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 16:45 10-09-2021
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Необходимо найти в текущем каталоге и под-каталогах все файлы определенного типа и перед записью пути  в файл заменить определенные символы. Например,
 
for /R %%f in (.\*.jpg,*.png) do (
 
set "filepath=%%f"
echo %filepath%
set "filepath=%filepath:\=\\%"
echo %filepath% >> list.txt
 
)
 
Однако, переменная filepath всегда оказывается пустой. В чем ошибка ?

Всего записей: 4394 | Зарегистр. 05-01-2006 | Отправлено: 23:20 13-09-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
%-переменная разворачивается перед выполнением команды FOR. В этот момент она не определена, отсюда и результат. Нужно использовать delayed expansion и !-переменные. Однако имена файлов могут содержать "!", поэтому присваивать значение нужно при отключенном delayed expansion:

Код:
 
for /R %%f in (.\*.jpg,*.png) do (
 
set filepath=%%f
setlocal enabledelayedexpansion
echo !filepath!
set filepath=!filepath:\=\\!
>> list.txt echo !filepath!
endlocal
 
)
 


----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 23:41 13-09-2021 | Исправлено: GCRaistlin, 23:43 13-09-2021
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Благодарю, так работает
А можно сразу обрабатывать переменную %%f без присвоения ее значения filepath ?

Всего записей: 4394 | Зарегистр. 05-01-2006 | Отправлено: 00:12 14-09-2021 | Исправлено: mithridat1, 00:12 14-09-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
Заменить символы в ней не получится.

----------
Magically yours
Raistlin

Всего записей: 3086 | Зарегистр. 18-04-2005 | Отправлено: 08:27 14-09-2021
JohnRD

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый день уважаемые гуру
приходится постоянно устанавливать сертификаты всяких ФСС органов, Минком связи итд, на пк в разные хранилища: корневые, промежуточные, другие пользователи итд
если для первых двух в GPO есть возможность, то для "другие пользователи" и остальные нет.
но есть утилита certutil

Код:
 
for /f "delims=" %%g in ('certutil.exe -v -store addressbook^|findstr "Serial.Number"') do echo %%g
 

это выдает серийники установленных сертификатов в хранилище другие пользователи
 

Код:
 
for /f "delims=" %%g in ('certutil.exe -v EE126B38319A010F398A238225454BCB7F562420.cer^|findstr "Serial.Number"') do echo %%g
 

такое отдает серийник конкретного выбранного сертификата
 
вывод примерно такой

Код:
 
Serial Number: 01d76da04fd9aea00000033603e80002
 

 
вопрос:
каким образом можно выкладывая новые сертификаты в определенную папку и выполняя при логоне пк через GPO скрипт, сравнивать, например серийники или отпечатки тех сертификатов, что в папке и тех, что установлены на данном пк и соответственно устанавливать те, которых нет, игнорируя те номера что присутствуют.
 
команда установки сертификата в хранилище "другие пользователи"

Код:
 
certutil -f -addstore "addressbook" EE126B38319A010F398A238225454BCB7F562420.cer
 

 
certutil EN версии
 
заранее благодарен
 
 

Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 11:45 14-09-2021 | Исправлено: JohnRD, 11:45 14-09-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JohnRD

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

1. Проще всего - игнорировать состояние "установлен" и тупо устанавливать всё, что есть в папке.

Код:
for /F "usebackq tokens=*" %%C in (`dir /B "\\SRV\Share\folder with certs\*.crt"`) do (
certutil -f -addstore "addressbook" "%%~fC"
)

2. Если ОЧЕНЬ хочется поизвращаться, то алгоритм довольно прост: список серийников установленных сертификатов во временный файл; для каждого сертификата из папки проверяется наличие его серийника в этом списке и при наличии отсутствия - устанавливается сертификат; временный файл удаляется. {Можно и без временного файла, но тогда полный список серийников установленного придётся запрашивать заново для каждого из сертификатов в папке, что довольно ресурсоёмко}.
Код:
@echo OFF
copy /y nul "%TEMP%\cert_serials.tmp" ||exit
for /F "usebackq tokens=2 delims=: " %%N in (`certutil.exe -v -store addressbook^|findstr "Serial.Number"`) do 1>>"%TEMP%\cert_serials.tmp" echo %%~N
for /F "usebackq tokens=*" %%C in (`dir /B "\\SRV\Share\folder with certs\*.crt"`) do (
    for /F "usebackq tokens=2 delims=: " %%F in (`certutil.exe -v "%%~fF"^|findstr "Serial.Number"`) do find /I "%%~C" "%TEMP%\cert_serials.tmp" || certutil -f -addstore "addressbook" "%%~fF"
)
del /q "%TEMP%\cert_serials.tmp"
goto :EOF

 

Цитата:
certutil EN версии

Сугубо параллельно.
Для любой другой локализации достаточно выполнить "chcp 437" перед certutil, чтобы выдача команды пошла на английском.

И таки да, если сертификаты не все из одного удостоверяющего центра - то S/N запросто может оказаться неуникальным (уникальность гарантирована только в пределах одного УЦ).
Надёжнее в качестве уникального идентификатора сертификата использовать "Subject Key Identifier"...

----------
http://www.imho.ws

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 00:23 17-09-2021 | Исправлено: BorlandIMHO, 12:38 23-09-2021
MH100181Q



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача, при перекидывании произвольное кол-во PDF-файлов на батник оптимизировать их.
заменяя оригинал, либо создавая оптимизированный рядом,  
 
В таком виде работает,  с конкретными прописанными файлами.

Код:
pdfoptimize -pr mrc 000.pdf 000_x32.pdf

 
В таком виде не работает, аргументы *.* либо *.pdf не принимает
 

Код:
@echo off
title 3-Heights PDF Optimizer
"%~dp0pdfoptimize.exe"  "-pr" "mrc" %*

 

Код:
@echo off
title 3-Heights PDF Optimizer
set "PATH=%~dp0;%PATH%"
:workloop
if "%~1"=="" (pause > nul & exit)
if exist "%~1\" (
for /r "%~1" %%i in (*.pdf) do pdfoptimize "%%~fi" -pr mrc
) else (
pdfoptimize "%~f1" -pr mrc
)
shift
goto :workloop

 
Сама программа с примером PDF
https://www.upload.ee/files/13400816/PDF_Optimizer_6.17.2.4.7z.html

Всего записей: 923 | Зарегистр. 29-04-2008 | Отправлено: 21:42 17-09-2021 | Исправлено: MH100181Q, 21:45 17-09-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MH100181Q
Насколь я понял из справки программы {pdfoptimize /?} - последний вариант скрипта нерабочий чисто из-за неправильного задания аргументов для неё...
С минимальными правками - заработало:

Код:
@echo off
title 3-Heights PDF Optimizer
set "PATH=%~dp0;%PATH%"
:workloop
if "%~1"=="" (pause > nul & exit)
if exist "%~1\" (
for /r "%~1" %%I in (*.pdf) do pdfoptimize -pr mrc "%%~fI" "%%~dpnI_optimized.pdf"
) else (
pdfoptimize -pr mrc "%~f1" "%~dpn1_optimized.pdf"
)
shift /1
goto :workloop



----------
http://www.imho.ws

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 22:15 17-09-2021 | Исправлено: BorlandIMHO, 22:33 17-09-2021
MH100181Q



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Благодарю!, всё работает, файлы/папки перекидываются
Чисто эстетический вопрос, консоль сама не закрывается
Но это то уже шашечки
 

Всего записей: 923 | Зарегистр. 29-04-2008 | Отправлено: 22:35 17-09-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MH100181Q

Цитата:
Чисто эстетический вопрос, консоль сама не закрывается

Естественно, её же держит pause!
Достаточно удалить из скрипта "pause > nul & " и оно будет-таки закрываться само...

----------
http://www.imho.ws

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 22:40 17-09-2021
MH100181Q



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO Точно!

Всего записей: 923 | Зарегистр. 29-04-2008 | Отправлено: 22:46 17-09-2021
armenoid1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята просьба помочь.
Как сделать чтоб окошка cmd была скрытой?  
Использую BAT to EXE ,все делает как надо,но все что создется то ругается антивирусом.  
Пробывал еще проги из шапки,но созданный  со скрытой окошкой потом антивирус ругает .
Команды точно не вредоностные и 100% не вирусоподобные.

Всего записей: 161 | Зарегистр. 24-11-2013 | Отправлено: 23:17 18-09-2021 | Исправлено: armenoid1, 00:54 19-09-2021
Susie7



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
8.1х64 перенести папки «Temp» в другое место надо батником.
Собссно, батничек бы, плз...
Хелп ми...
P.S. виляю ножкой и хвостиком
 
С С на G, если что.

----------
Принцессы бывают не только в сказках

Всего записей: 771 | Зарегистр. 11-07-2018 | Отправлено: 14:03 19-09-2021 | Исправлено: Susie7, 14:09 19-09-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Susie7  You are Welcome
Tmp_Folders.reg
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1129 | Зарегистр. 04-09-2015 | Отправлено: 14:47 19-09-2021 | Исправлено: alex52mail, 14:51 19-09-2021
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Susie7
Если требуется изменить переменную окружения TEMP текущего пользователя:
Код:
setx TEMP g:\Temp
Если требуется изменить переменную окружения TEMP системы:
Код:
setx TEMP g:\Temp /M



----------
http://www.imho.ws

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 14:54 19-09-2021
Susie7



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
А можно ли до кучи и рабочий вариант? С обеими папками...


----------
Принцессы бывают не только в сказках

Всего записей: 771 | Зарегистр. 11-07-2018 | Отправлено: 15:36 19-09-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru