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

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

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

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

cchameleone



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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 (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2271 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
thejustsoul



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

Код:
@type file.txt | @findstr /C:"[error]" > error.txt

Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 21:54 09-10-2017
lets_go_champ



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

Цитата:
findstr "[error]" in.log>out.log

 
почему-то после этого кода в оут.лог создается почти полная копия ин.лога...
 
thejustsoul
@type file.txt | @findstr /C:"[error]" > error.txt
 
error.txt - пустой, ничего нету (
во время работы в батнике мелькает "слишком длинное имя строки" к тому же.
 
в общем хз в чем там дело, вроде и синтаксис простой в команде а все равно не идет
http://ab57.ru/cmdlist/findstr.html

Всего записей: 187 | Зарегистр. 08-03-2017 | Отправлено: 20:32 10-10-2017 | Исправлено: lets_go_champ, 20:35 10-10-2017
YuS_2



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

Цитата:
все равно не идет


Код:
@echo off
echo Выполняем...
 
set "fl=test.txt"
set "err=error.txt"
 
rem Вариант 1 только фильтр строк, чистый CMD:
rem >"%err%" findstr /rc:"\[error\]" "%fl%"
 
rem Вариант 2 с перенумерацией строк, гибрид powershell:
powershell -exe bypass "&{$i=0;((gc %fl% -enc OEM) -match '\[error\]') -replace '^\d+'|%%{$i+=1;"""$i $_"""}|out-file -enc OEM %err%}"
 
echo Готово.
pause

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 11:47 11-10-2017
AlfaOmega

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ребята вот какая каверза помогите решить - прописана задача через NIRCMD но в какой-то момент курсора не видно и не выполняется нажатие в нужной точке - остальные нажатия везде отрабатывают, а потом буд-то курсор под окном оказывается - тока тронешь чуть-чуть мышь активируется поверх всех окон - как реализовать его видимость перед нажатием на заветное место по координатам?)) - или всегда его держать в тонусе поверх окон ?

Всего записей: 10 | Зарегистр. 09-11-2012 | Отправлено: 17:54 15-10-2017
pro100evil666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите реализовать скрипт
из папки 1 переместить файл в папку 2
при этом должны выполняться условия  
1)если есть файл в папке 1 то переместить, а если нету тогда ничего не делать
2)перед перемещением должны удаляться все файлы из папки 2

Всего записей: 20 | Зарегистр. 23-11-2011 | Отправлено: 07:52 19-10-2017
khasia



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
pro100evil666
В пределах директории. Под себя доделывать.

Цитата:
CD /d"%~dp0"
if exist folder1\file.txt del /f/q folder2\*.*&move /y folder1\file.txt folder2\

Всего записей: 2244 | Зарегистр. 18-02-2010 | Отправлено: 08:42 19-10-2017
pro100evil666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
работает только есть одно НО
даже если нет файла в папке 1 все равно очищается папка 2
хотелось бы что бы скрипт этого не делал

Всего записей: 20 | Зарегистр. 23-11-2011 | Отправлено: 09:04 19-10-2017
thejustsoul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pro100evil666
 
Не используйте:

Код:
CD /d"%~dp0"  

Используйте:

Код:
pushd "%~dp0"
...
popd

 
upd: возьмите действие в скобки (удалятся только файлы в указанной папке (folder2)):

Код:
if exist folder1\file.txt (del /f /q folder2\*.* & move /y folder1\file.txt folder2\)  

Ну или так (чтобы удалились и папки):

Код:
if exist "folder1\file.txt" (rd /s /q "folder2" & mkdir "folder2" & move "folder1\file.txt" "folder2\")


Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 10:08 19-10-2017 | Исправлено: thejustsoul, 10:22 19-10-2017
pro100evil666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@Echo Off
for %%N in ("D:\1\*.*") do ( if not exist %%N goto exit  
Else
 goto start: %%N is exists
 )
:exit  
:start
for /f "delims=" in ('dir "D:\1\*.*" /b/s 2^>nul') do move /y "D:\1\*.*" "D:\2\"
@echo off
exit
я так понимаю должно быть что то такое
это не работает (
 
Добавлено:
@Echo Off
for %%N in ("D:\1\*.*") do (
  if not exist %%N (
  goto exit: %%N is not exists
  ) Else (
  goto start: %%N is exists
  )  
)
:exit
@echo off
exit
:start
del /q D:\2\ && move /y "D:\1\*.*" "D:\2\"
@echo off
exit
 
Работает

Всего записей: 20 | Зарегистр. 23-11-2011 | Отправлено: 10:24 19-10-2017
khasia



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

Цитата:
если есть файл в папке 1 то переместить,

Какой-то конкретный файл, или любой хотя бы единственный?
Т.Е. если папка 1 не пуста? Если это так то:

Цитата:
работает только есть одно НО
даже если нет файла в папке 1 все равно очищается папка 2  

Можно предположить что в папке 1 есть файл, может скрытый.
=============================================
Эта команда от thejustsoul:

Цитата:
if exist folder1\file.txt (del /f /q folder2\*.* & move /y folder1\file.txt folder2\)  
 

Вполне рабочая.

Всего записей: 2244 | Зарегистр. 18-02-2010 | Отправлено: 11:18 19-10-2017 | Исправлено: khasia, 11:36 19-10-2017
pro100evil666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
может не правильно выразился
не надо чтоб папка 2 очищалась если нету файла в папке 1
 
Добавлено:
кто может проверить работает по win 7 или выше?

Всего записей: 20 | Зарегистр. 23-11-2011 | Отправлено: 11:25 19-10-2017
khasia



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

Цитата:
@ECHO OFF
DIR folder1\*.* /B | FIND /V "lYubAyA_HrEnOtEn">NUL && (del /f/q folder2\*.*&move /y folder1\*.* folder2\)


Всего записей: 2244 | Зарегистр. 18-02-2010 | Отправлено: 14:58 19-10-2017
pro100evil666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зачем здесь ""lYubAyA_HrEnOtEn"?
 
Добавлено:
дошло xD

Всего записей: 20 | Зарегистр. 23-11-2011 | Отправлено: 05:14 20-10-2017
AlexIIID



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, у меня 2 вопроса:
1 вопрос по утилите cmdow.exe.
Создал я батник, где первой строчкой прописал cmdow @ /HID
Если запускать его по двойному щелчку все отлично работает, окно не отображается, в процессах видно, что батник запущен.
Но мне необходимо, чтобы батник стартовал с запуском Win.
Прописал я в HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run старт батника - он запускается, но почему то утилита cmdow.exe не срабатывает и окно батника видно.
Пробовал кидать ярлык на батник в папку автозагрузки и прописывать в планировщик заданий везде ситуация та же, батник стартует, а вот утилита скрытия не срабатывает.  
cmdow.exe скопировал как в System32 так и в SysWOW64.
У меня Вин 7 *64. Также стоит антивирус KES10, утилита, батники и ярлыки добавлены в доверенные программы с максимальными допусками.
Я вот думаю может сама cmdow.exe стартует чуть позже чем начинает запускаться мой батник и надо паузу прописать, но тогда в чем смысл от скрытия процесса?
 
2 вопрос. На другом компьютере с той же системой и антивирусом через планировщик задач запускаю батник содержания:
"cmdow @ /HID
taskkill /f /im название_процесса.exe"
Батник запускается, т.к. пробовал убирать первую строчку и там многократно повторялся процесс тасккилл, а сам процесс не убивается.
Как это можно исправить?

Всего записей: 20 | Зарегистр. 09-09-2009 | Отправлено: 22:44 22-10-2017 | Исправлено: AlexIIID, 22:45 22-10-2017
VitaminP



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexIIID
Можно скрыть окно батника, запустив его через VBS скрипт следующего содержания:

Цитата:
Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run "Скрипт.cmd", 0, true

Всего записей: 284 | Зарегистр. 28-08-2013 | Отправлено: 20:40 23-10-2017
AlexIIID



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaminP
 
спасибо, попробую.
Я так понимаю, он и бат файлы запускает, а не только cmd?

Всего записей: 20 | Зарегистр. 09-09-2009 | Отправлено: 21:48 23-10-2017 | Исправлено: AlexIIID, 21:49 23-10-2017
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Требуется попарно объединить WAV-файлы из двух нумерованных списков (по 6000 файлов в каждом).
 
Команда
Код:
COPY /B 0001EN.WAV + Pause.WAV + 0001RU.WAV 0001-ENRU.WAV
к сожалению, не подходит по формату (плееры понимают только первый фрагмент).
 
Нужна специализированная утилиточка. Кто-нибудь знает такую?
 


B3T6, tmrx, спасибо!

Всего записей: 1760 | Зарегистр. 09-02-2006 | Отправлено: 22:13 23-10-2017 | Исправлено: romby, 21:02 24-10-2017
romby



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

Цитата:
COPY /B 0001EN.WAV + Pause.WAV + 0001RU.WAV 0001-ENRU.WAV
И ещё вопрос. Как сделать цикл, подставляющий в эту или подобную команду числа от 0001 (ЧЕТЫРЕ цифры!) до 6000?
 

 
metatrop, спасибо!

Всего записей: 1760 | Зарегистр. 09-02-2006 | Отправлено: 01:10 24-10-2017 | Исправлено: romby, 21:02 24-10-2017
metatrop

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexIIID
 
cmdow @ /HID - это сокрытие окна консоли после того, как оно уже отобразилось (хотя, может быть, при каких-то условиях не успело отрисоваться).
 
В некоторых случаях бывает полезно
 
cmdow.exe /RUN /HID myfile.bat
 
но поскольку сам cmdow.exe - консольная программа, то для него окно всё-таки создаётся, за исключением случаев, когда он запускается в уже существующем консольном окне.
 
Чтобы ни при каких условиях не было видно нового окна при запуске из Проводника или Total Commander:
 
hstart.exe /NOCONSOLE myfile.bat
 
hstart.exe в отличие от cmdow.exe является GUI программой, при запуске которой консоль не создаётся. Вообще говоря, и cmdow.exe можно легко сделать GUI программой, изменив в нём один-единственный байтик
 
0000014C: 03 02 ; cmdow 1.4.3, 31232 bytes; в общем случае: HIEW F8 F3 Subsystem 0002/GUI
 
но тогда не удастся видеть на экране всё, что cmdow выводит текстом, хотя перенаправление вывода из .bat/.cmd сценариев будет работать по-прежнему.
 
или же, как вариант, можно запускать myfile.bat через .lnk ярлык, в котором выставить режим минимизации окна - тогда при запуске промелькнёт лишь планка в панели задач, которая не будет перехватывать фокус ввода.
 
 
romby

Код:
 
@echo off  
SetLocal EnableExtensions EnableDelayedExpansion  
for /L %%N in (1,1,20) DO (  
  set "NUM=000%%N"
  echo [!NUM:~-4!]  
)  
 


Всего записей: 260 | Зарегистр. 17-09-2010 | Отправлено: 08:51 24-10-2017 | Исправлено: metatrop, 08:55 24-10-2017
AlexIIID



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
metatrop  
 
То, что консоль мелькает на несколько секунд для меня не критично. Мне главное чтобы Файл запускался при старте компьютера и консоль пропадала. На некоторых компьютерах с Вин 7 *64, строка cmdow @ /HID срабатывает как при двойном клике на батник, так и при запуске. Но на других с той же системой отлично работает при двойном клике, но не срабатывает при запуске, т.е. сам батник запускается и выполняется, только не происходит скрытие окна от утилиты cmdow.exe вообще. У меня подозрения, что это связано с медленной загрузкой компьютера и не "прогрузкой" самой утилиты до старта батника, т.к. это происходит на компьютерах с уже изрядно "потрепанной" ОС.
В любом случае спасибо и вам и VitaminP, сегодня опробую все предложенные варианты.
 
А может подскажите почему может не срабатывать
"taskkill /f /im название_процесса.exe"?
Суть такая: у меня есть один длящийся процесс, мне необходимо время от времени его пере запускать, и я через планировщик забиваю раз в час задание таск килл, а через минуту новый старт батника с этим процессом. Предполагаю, что и в одном батнике можно реализовать процедуру проверки запущен ли такой-то процесс, если да, то его завершаем и через секунд 60 запускаем его же, но к сожалению мои познания пока невелики и не получается это реализовать, вот и пользуюсь планировщиком.
 

Всего записей: 20 | Зарегистр. 09-09-2009 | Отправлено: 09:47 24-10-2017 | Исправлено: AlexIIID, 09:47 24-10-2017
   

Страницы: 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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru