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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 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

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

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.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 38029 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Simoid
В Windows 10 команда sort стала поддерживать ключ /unique, так что если в именах файлов нет знака =, все делается в 1 строчку.

Всего записей: 10881 | Зарегистр. 11-03-2002 | Отправлено: 06:46 17-02-2022
BorlandIMHO

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

Цитата:
В Windows 10 команда sort стала поддерживать ключ /unique

Встроенная справка команды (sort /?) об этом скромно умалчивает...
 
Simoid
С учётом вышеупомянутой фичи, решить можно так:

Код:
@echo OFF
REM Директория с исходными *.txt
set "SOURCEFOLDER=x:\Path to\folder"
REM Файл результата
set "RESULTFILE=y:\Path to\another folder\Result.txt"
 
(for /R "%SOURCEFOLDER%" %%F in (*.txt) do 2>nul @find /V " " <"%%~fF" | find "=")| sort /unique >"%RESULTFILE%"
 

 
Pasha_ZZZ

Цитата:
если в именах файлов нет знака =

А как энак "=" в имени файла может помешать?..

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

Всего записей: 1608 | Зарегистр. 12-10-2006 | Отправлено: 10:37 17-02-2022 | Исправлено: BorlandIMHO, 10:41 17-02-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BorlandIMHO
Если его нет - то достаточно так:

Цитата:
type *.txt|findstr /c:"="|findstr /v /c:" "|sort /unique

Всего записей: 10881 | Зарегистр. 11-03-2002 | Отправлено: 11:20 17-02-2022
BorlandIMHO

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

Цитата:
type *.txt

В выводе команды будут имена файлов, что совершенно излишне...
Тогда уж  

Код:
2>nul type *.txt|findstr /c:"="|findstr /v /c:" "|sort /unique

 
Но так и не понял - чем помешают "=" в именах файлов?..

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

Всего записей: 1608 | Зарегистр. 12-10-2006 | Отправлено: 11:43 17-02-2022
Pasha_ZZZ



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

Цитата:
В выводе команды будут имена файлов, что совершенно излишне...


Цитата:
Но так и не понял - чем помешают "=" в именах файлов?

А вы подумайте об этом...
Цитата:
findstr /c:"="


Всего записей: 10881 | Зарегистр. 11-03-2002 | Отправлено: 11:56 17-02-2022
BorlandIMHO

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

Цитата:
А вы подумайте об этом...


Код:
2>nul


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

Всего записей: 1608 | Зарегистр. 12-10-2006 | Отправлено: 11:58 17-02-2022
bomzz

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

Цитата:
chrome.exe:20132:1512
chrome.exe:10728:20132
chrome.exe:12312:20132
chrome.exe:19208:20132
chrome.exe:6004:20132
chrome.exe:12736:20132
chrome.exe:19932:20132
chrome.exe:17556:20132
chrome.exe:15464:20132
chrome.exe:9580:20132
 

неужели в одну строку нет решения

Цитата:
For /F "tokens=2 delims=:" %%a In ('proclist2^|find /i "explorer.exe"') Do set "_pid=%%a"
For /F "tokens=2,3 delims=:" %%i In ('proclist2^|find /i "chrome.exe"') Do if "%_pid%" equ "%%j" taskkill /f /PID %%i
 

Всего записей: 3338 | Зарегистр. 29-03-2016 | Отправлено: 15:31 17-02-2022 | Исправлено: bomzz, 16:30 17-02-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BorlandIMHO
мои поздравления наверное, но в одну строку не смог, слился

Всего записей: 10881 | Зарегистр. 11-03-2002 | Отправлено: 16:36 17-02-2022
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
я сжулил еще одну закономерность нашел, что основной процесс дочерний експлореру
 
 
Добавлено:
Pasha_ZZZ
я уже думал запихать результат в буфер обмена и потом обрабатывать оттуда

Всего записей: 3338 | Зарегистр. 29-03-2016 | Отправлено: 16:38 17-02-2022 | Исправлено: bomzz, 16:38 17-02-2022
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
Если вопрос "как мне двустрочное решение записать в 1 строку", то

Код:
For /F "tokens=2 delims=:" %%a In ('proclist2^|find /i "explorer.exe"') Do (For /F "tokens=2,3 delims=:" %%i In ('proclist2^|find /i "chrome.exe"') Do if "%%a" equ "%%j" taskkill /f /PID %%i)

 
Добавлено:
Pasha_ZZZ

Цитата:
в одну строку не смог, слился

Если вы про этот код, то он переписывается в 1 строку без проблем. Только потребуется прямо указать обрабатываемую директорию и файл-получатель.

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

Всего записей: 1608 | Зарегистр. 12-10-2006 | Отправлено: 16:49 17-02-2022
ASVSolenyi



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

Всего записей: 817 | Зарегистр. 08-11-2015 | Отправлено: 20:39 17-02-2022 | Исправлено: ASVSolenyi, 18:18 18-02-2022
insorg



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеем
Win10TaskManager.reg
 
Нужно превратить его в батник, т.е. дёргать reg add, что я собственно и делаю
Win10TaskManager.bat
 
И, вполне логично и понятно, что он не работает нормально, потому что третья строка аж 9802 знака.
 
Что здесь можно сделать, чтоб работало?
Вариант наэхать .reg файл, выполнить и потом его удалить не подходит по ряду причин.

Всего записей: 2956 | Зарегистр. 04-11-2010 | Отправлено: 14:39 18-02-2022
Inoz2000



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

Всего записей: 3761 | Зарегистр. 23-04-2009 | Отправлено: 15:00 18-02-2022
insorg



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Третья строка (которая Preferences) не создаётся правильная запись в реестре.

Всего записей: 2956 | Зарегистр. 04-11-2010 | Отправлено: 15:02 18-02-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg
Я исследовал тему использования очень длинных строк:

Цитата:
    В Vista+ длина командной строки, вероятно, ограничений не имеет, однако
    команда SET длиннее 8194 символов обрабатывается неверно: 8195-й символ
    (после !-раскрытия переменных) выпадает. Соответственно, для команды
    'set v=<val>' выпадет 8189-й символ <val>, для команд 'set  v=<val>' и
    'set vv=<val>' - 8188-й и т. д. Поэтому максимальная длина "осмысленного"
    значения переменной (совпадающего с тем, что указали в команде), - 8188
    символов. До 8189 символов значение можно дополнить так: 'set S=!S!z'.
 

 
У вас выпадает один из символов. Его нужно предварительно удвоить, и будет работать правильно. Может быть.

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

Всего записей: 3483 | Зарегистр. 18-04-2005 | Отправлено: 15:05 18-02-2022
insorg



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я в курсе, что строка слишком длинная. На ХР вообще 2К знаков было. Это уже в новых виндах до 8К поняли лимит.
Суть вопроса в том, как без лишних промежуточных файлов можно такую запись в реестре сделать? Может, её можно как-то разделить на части?

Всего записей: 2956 | Зарегистр. 04-11-2010 | Отправлено: 15:11 18-02-2022
Inoz2000



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

Всего записей: 3761 | Зарегистр. 23-04-2009 | Отправлено: 15:30 18-02-2022
Mr_SMiT



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста!
Надо получить тайм штамп юникс 13 значный. Последний знак не критично, можно рандом.
На просторах нашел
 
call:2UTC "%date% %time%
@set timestamp=%utc%
@echo %timestamp%  
@goto end
 
:2UTC    - Function start. Parameter format="dd.mm.yyyy HH:MM:SS.......
@REM - output variable name = %utc%. Second's ciphers can be skipped. Ex.:   "dd.mm.yyyy HH:MM
 
@set ts=%1
@set ts=%ts:~1%
@set /a "yy=10000%ts:~6,4% %% 10000, mm=100%ts:~3,2% %% 100, dd=100%ts:~0,2% %% 100, H=%ts:~11,2%"
@set /a "M=100%ts:~14,2% %%100, S=100%ts:~17,2% %%100"
@set /a z=(14-mm)/12, y=yy-z, utc=y*365+y/4-y/100+y/400+(153*(mm+12*z-3)+2)/5+dd-719469, utc=utc*86400+H*3600+M*60+S
@goto end
 
:end
 
Делает 10 знаков, ну в конце можно добавить 2 знака от %time% и еще один, например от этой же переменной
 
Хочу без call, просто в переменную. И час (геозону) желательно прибавить, но думаю с этим сам разберусь.
Без call у меня не выходит
 

Всего записей: 649 | Зарегистр. 18-07-2006 | Отправлено: 15:42 18-02-2022
los

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

Цитата:
Надо получить тайм штамп юникс 13 значный.

если речь о epoch там 10 знаков.

Всего записей: 6052 | Зарегистр. 08-09-2001 | Отправлено: 16:34 18-02-2022
boss911



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

Код:
FOR /R "Files" %%I IN (*) DO ECHO %%I

Помогите, пожалуйста, отфильтровать с помощью FINDSTR /V /IRC (регулярных выражений) вывод строк, где в начале имени папки/файла содержится символ "#", именно в начале имени, то есть по сути это всегда будет "*\#*", где "*" - любой символ/пробел. Регулярные выражения для меня боль. Заранее спасибо.
 
Добавлено:

Код:
FOR /R "ADDFiles" %%I IN (*) DO ECHO %%I | FINDSTR /V /IRC:".*\\#.*"

Правильно? Сам додумался, вроде работает как мне нужно.

Всего записей: 3623 | Зарегистр. 29-01-2005 | Отправлено: 21:54 21-02-2022 | Исправлено: boss911, 22:18 21-02-2022
Открыть новую тему     Написать ответ в эту тему

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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2023

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru