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

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

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
приветствую
возможно у когонить есть готовое решение прошу поделиться...
есть батник, запускается из планировщиика раз в сутки. нужно чтобы он по завершению всех задач писал в лог, созданный рядом с батником строку типа "дд/мм/ггг чч/мм/сс Задача успешно выполнена"

Всего записей: 2502 | Зарегистр. 12-10-2005 | Отправлено: 16:10 07-12-2020
insorg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekG
(@ECHO %date:~8,2%/%date:~3,2%/%date:~0,2% %time:~0,2%/%time:~3,2%/%time:~6,2% Задача успешно выполнена)>>log.txt

Всего записей: 1959 | Зарегистр. 04-11-2010 | Отправлено: 16:39 07-12-2020 | Исправлено: insorg, 18:56 07-12-2020
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekG
Если системный формат даты и времени устроит, то  

Цитата:
echo %date% %time% Задача успешно выполнена >>file.log  

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 16:48 07-12-2020 | Исправлено: Fenrizz, 16:49 07-12-2020
Artem_Butenko



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

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

 
Нашёл такой вариант, только не пойму, как организовать завершение пакетного сценария, если файлов в папке больше одного.
 
@echo off
setlocal enabledelayedexpansion
for /f "tokens=2 delims=: " %%a in ('type "%~dp0Input\File.txt" ^|find /i "%~dp0Input\File"') do set err=%%a & echo !err!
endlocal
pause

Всего записей: 657 | Зарегистр. 19-02-2008 | Отправлено: 18:09 07-12-2020 | Исправлено: Artem_Butenko, 18:12 07-12-2020
juk777

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

Цитата:
nircmd

ok - то что надо...

Всего записей: 388 | Зарегистр. 18-10-2009 | Отправлено: 18:46 07-12-2020
Fenrizz



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

Цитата:
@echo off
set cnt=0
for %%A in (C:\TEST\FOLDER\*) do set /a cnt+=1
if %cnt% gtr 1 goto FINISH
...
:FINISH
 

 
или можно так  

Цитата:
if %cnt% gtr 1 EXIT

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 20:53 07-12-2020 | Исправлено: Fenrizz, 06:05 08-12-2020
KiloSub



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz, только смысл их все 100500 файлов считать? Как только >1, логичней сразу выходить.

Всего записей: 386 | Зарегистр. 30-05-2020 | Отправлено: 12:31 08-12-2020
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сделал batch для загрузки файла wincmd.key в реестр - вдруг кому-нибудь пригодится.
По мотивам https://ghisler.ch/board/viewtopic.php?t=27098
 

Цитата:
@echo off
setlocal enabledelayedexpansion
certutil.exe -f -encodehex wincmd.key wincmd_key.hex
 
set outstring="key"=hex:
 
echo REGEDIT4 >wincmd_key.reg
echo. >>wincmd_key.reg
echo [HKEY_CURRENT_USER\Software\Ghisler\Total Commander] >>wincmd_key.reg
 
for /f "tokens=1-20" %%G in (wincmd_key.hex) do (
set outstring=!outstring!%%H,
set outstring=!outstring!%%I,
set outstring=!outstring!%%J,
set outstring=!outstring!%%K,
set outstring=!outstring!%%L,
set outstring=!outstring!%%M,
set outstring=!outstring!%%N,
set outstring=!outstring!%%O,
set outstring=!outstring!%%P,
set outstring=!outstring!%%Q,
set outstring=!outstring!%%R,
set outstring=!outstring!%%S,
set outstring=!outstring!%%T,
set outstring=!outstring!%%U,
set outstring=!outstring!%%V,
set outstring=!outstring!%%W,)
 
echo %outstring:~0,-1% >>wincmd_key.reg
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start """" regedit.exe /S wincmd_key.reg"
 
del /F /Q wincmd_key.hex
del /F /Q wincmd_key.reg  

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 12:59 08-12-2020 | Исправлено: Fenrizz, 07:52 09-12-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос знатокам коммандной строки:
Можно ли с помощью cmd\bat изменить режим сортировки в проводнике Windows ?

Всего записей: 2384 | Зарегистр. 11-12-2002 | Отправлено: 01:20 11-12-2020 | Исправлено: kot1313, 01:21 11-12-2020
Inoz2000



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

Всего записей: 3457 | Зарегистр. 23-04-2009 | Отправлено: 09:27 11-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно было применение твиков ко всем учетным записям. На oszone нашел нужную статью, все работает. Только один нюанс твики должны быть в reg файле tweak.reg рядом с этим скриптом. А мои твики реестра давно переведены в cmd формат. Как сделать все в одном cmd файле?
 

@echo off
:: Извлекаем из реестра полный путь к папке, содержащей профили пользователей
 for /f "usebackq tokens=3,3* delims==    " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v  
 ProfilesDirectory`) do set profiles=%%i
 
:: Полученный путь используем в качестве новой переменной %profiles%
 for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i
 
::  Для всех профилей пользователей (кроме All Users и %Username%) поочередно загружаем пользовательский
 :: куст реестра, представляющий собой файл NTUSER.DAT и импортируем в него заранее подготовленный
 :: REG-файл, содержащий твики реестра.
 For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO (
   reg load HKEY_USERS\Custom "%profiles%\%%i\NTUSER.DAT"
   reg import   tweak.reg
   reg unload HKEY_USERS\Custom
)
 exit

 
В строке вместо reg import tweak.reg я вставляю кусочек из своего твика в формате cmd  
 

@echo Не показывать кнопку Просмотра задач на панели задач
REG DELETE "HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer\MultiTaskingView\AllUpView" /V Enabled /F
REG ADD "HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V ShowTaskViewButton /T REG_DWORD /D 0 /F
 
@echo Скрывать конфликт слияния папок
Reg.exe add "HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideMergeConflicts" /t REG_SZ /d "1" /f
 
@echo Не показывать при прикреплении окна, что можно прикрепить рядом с ним
Reg.exe add "HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "SnapAssist" /t REG_SZ /d "0" /f
 
@echo Не показывать недавно используемые и использовавшиеся папки на панели быстрого доступа
Reg.exe add "HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer" /v "ShowFrequent" /t REG_SZ /d "0" /f
Reg.exe add "HKEY_USERS\Custom\Software\Microsoft\Windows\CurrentVersion\Explorer" /v "ShowRecent" /t REG_SZ /d "0" /f
 
@echo Отключить залипание клавиши Shift после 5 нажатий
Reg.exe add "HKEY_USERS\Custom\Control Panel\Accessibility\StickyKeys" /v "Flags" /t REG_SZ /d "506" /f
 
 
и так не срабатывает.

Всего записей: 424 | Зарегистр. 19-03-2009 | Отправлено: 16:45 11-12-2020 | Исправлено: mat86, 16:57 11-12-2020
insorg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Цитата:
HKEY_USERS\Custom
Ничего в этой конструкции не смущает? В этой ветке окромя .DEFAULT и кучи всяких S-1-5-*** быть не должно.

Всего записей: 1959 | Зарегистр. 04-11-2010 | Отправлено: 16:54 11-12-2020 | Исправлено: insorg, 16:54 11-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg нет не смущает,  вот же монтирование происходит именно сюда
Цитата:
reg load HKEY_USERS\Custom "%profiles%\%%i\NTUSER.DAT"
я же ссылку дал на оригинал статьи. Кроме того написал что все работает, если положить рядом этот же файл только в формате reg (c переделанным под HKEY_USERS\Custom)

Всего записей: 424 | Зарегистр. 19-03-2009 | Отправлено: 17:01 11-12-2020
Retro222

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg, а он решил придумать свой собственный куст реестра.

Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 17:02 11-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Retro222 вы прежде чем юморить внимательно ознакомьтесь с вопросом, все работает если рядом лежит файлик reg, а если все вставить в cmd, то тоже работает, но не в цикле, срабатывает один раз для первого подключенного пользователя (NTUSER.DAT), для второго твики уже не вносятся

Всего записей: 424 | Зарегистр. 19-03-2009 | Отправлено: 17:09 11-12-2020
insorg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Даже если подобные костыли где-то работают, это ещё не обязательно будет означать, что это работает везде.
Мой совет остаётся в силе - поменять это недоразумение на адекватно заданные пути и сравнить результат.
И уже исходя из результата мы сможем о чём-то говорить более конструктивно.

Всего записей: 1959 | Зарегистр. 04-11-2010 | Отправлено: 17:57 11-12-2020
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Что значит "не срабатывает"? Попробуйте вводить эти команды последовательно вручную через консоль и смотрите на результат.

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 18:10 11-12-2020
Death_INN

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

Всего записей: 2251 | Зарегистр. 24-10-2002 | Отправлено: 18:27 11-12-2020 | Исправлено: Death_INN, 18:47 11-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проверял в XP все работало, сейчас того компьютера нет, проверяю на семерке уже не срабатывает, даже hklm, сейчас попробую разобраться
 
Добавлено:
Вообщем вот так срабатывает, запись появляется во всех профилях


For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%SystemDrive%\Users" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO (
   reg load HKLM\Custom "%SystemDrive%\Users\%%i\NTUSER.DAT"
Reg.exe add "HKLM\Custom\1" /v "TEST1" /t REG_SZ /d "111" /f
   reg unload HKLM\Custom
)


Это если напрямую указать папку с профилями "%SystemDrive%\Users", а если так  

for /f "usebackq tokens=3,3* delims==    " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i
for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i
For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO (
   reg load HKEY_USERS\Custom "%profiles%\%%i\NTUSER.DAT"
Reg.exe add "HKLM\Custom\1" /v "TEST1" /t REG_SZ /d "111" /f
   reg unload HKEY_USERS\Custom
)


не работает в семерке, работало только в XP

Всего записей: 424 | Зарегистр. 19-03-2009 | Отправлено: 19:31 11-12-2020
MihailM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хотел спросить , если в имени файла/каталога имеется символ пробела , то такие файлы/каталоги лучше заключать в двойные кавычки. Вопрос , а в 10-ке это что не прокатывает ?
Что то попробовал старый батник на 10ке , был каталог с пробелами , что то не захотел обрабатывать такие файлы .. пришлось каталог без пробелов делать , тогда всё заработало..

Всего записей: 2303 | Зарегистр. 19-10-2003 | Отправлено: 23:03 11-12-2020 | Исправлено: MihailM, 23:06 11-12-2020
Открыть новую тему     Написать ответ в эту тему

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