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

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

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

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

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Вам правильно указали проверять каждую команду в консоли и более внимательно вносить исправления. Если уж начинаете использовать HKLM, то его надо использовать везде.
Если убрать лишнее и немного поправить, то такой вариант работает и в XP и Win 7:

Код:
for /f "tokens=2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory ^|find /i "ProfilesDirectory"') do set profiles=%%j
for /f "tokens=*" %%i in ('echo %profiles%') do set profiles=%%i
For /F "tokens=*" %%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 "HKEY_USERS\Custom\1" /v "TEST1" /t REG_SZ /d "111" /f
   reg unload HKEY_USERS\Custom
)


Всего записей: 536 | Зарегистр. 11-10-2004 | Отправлено: 23:48 11-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lexapass, это вы тот lexapass который занимался Hiren's BootCD, польщен что вы мне ответили, спасибо за ваш Hiren's BootCD, я до сих пор пользуюсь версией 15.2, спасибо за помощь.

Цитата:
Вам правильно указали проверять каждую команду в консоли и более внимательно вносить исправления.  
я с этим не спорил, я проверял, так собственно и понял где ошибка
Цитата:
Если уж начинаете использовать HKLM, то его надо использовать везде.
я перешел на HKLM так как некоторым от HKEY_USERS рябит в глазах и акцент внимания смещается только на использование этой ветки. Потому как HKEY_USERS у меня везде срабатывает, но может я и не прав, раз говорят лучше перейти
Цитата:
Если убрать лишнее и немного поправить, то такой вариант работает и в XP и Win 7:
Спасибо большое за исправление, моих знаний к сожалению не хватает самому исправить. Завтра вечером попробую и отпишусь
 
 

Всего записей: 420 | Зарегистр. 19-03-2009 | Отправлено: 03:45 12-12-2020 | Исправлено: mat86, 03:59 12-12-2020
KiloSub



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM
Нужно пример смотреть,  а  то я даже в разных версиях 10-ки в cmd разные результаты получал. Но у меня другое, например команда xcopy, в 20Н2 если путь источника заканчивается на \ , то работало, а в 1809 выдавало ошибку.

Всего записей: 318 | Зарегистр. 30-05-2020 | Отправлено: 07:15 12-12-2020 | Исправлено: KiloSub, 07:15 12-12-2020
Fenrizz



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

Цитата:
Хотел спросить , если в имени файла/каталога имеется символ пробела , то такие файлы/каталоги лучше заключать в двойные кавычки. Вопрос , а в 10-ке это что не прокатывает ?  

Прокатывает.  
 

Всего записей: 360 | Зарегистр. 12-09-2017 | Отправлено: 07:36 12-12-2020
MihailM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiloSub, а зачем пример то ,вот к примеру в выне7 всё ок .. всё робит .. тем более там банальная архивация в bz2. , что там смотреть то %))
А вот в 10ке , что то не захотело , хотя возможно и сам мог накосячить , вроде смотрел , проверял. Делал через удаленку Тимку, мож не заметил что.  А как убрал пробелы из каталога в данном случае было ,  так всё ок заработало. Вообщем странно даже ..
Вот и решил спросить , мож в 10ке немного по другому теперь это.

Всего записей: 2214 | Зарегистр. 19-10-2003 | Отправлено: 11:08 12-12-2020 | Исправлено: MihailM, 11:13 12-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lexapass все работает огромное спасибо
 
 
Добавлено:
Подскажите пожалуйста вот есть команда создания нового пользователя например net user User 1 /add. А есть ли какой то способ создания пользователя так чтобы папка пользователя сразу начала появляться в папке Users?  
Вот в моем скрипте cmd создается новый пользователь, и в этом же скрипте нужно ему изменить записи в реестре в ветке  HKEY_CURRENT_USER, сделать это можно подключив куст NTUSER.DAT, но при создании нового пользователя командой net user User 1 /add, в папке Users не создается папка User и соответственно нет файла NTUSER.DAT, пока не зайдешь в этого созданного пользователя. Можно ли как то сделать все в одном сценарии. Тяжело объяснить, но надеюсь мысль понятно изложил

Всего записей: 420 | Зарегистр. 19-03-2009 | Отправлено: 01:40 13-12-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Внесите нужные изменения в HKEY_USERS\.DEFAULT - шаблон куста для нового пользователя.

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

Всего записей: 2988 | Зарегистр. 18-04-2005 | Отправлено: 02:04 13-12-2020
mat86



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

Всего записей: 420 | Зарегистр. 19-03-2009 | Отправлено: 02:11 13-12-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Такой возможности нет и быть не может. Новый NTUSER.DAT создается в контексте безопасности нового пользователя.

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

Всего записей: 2988 | Зарегистр. 18-04-2005 | Отправлено: 02:22 13-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите еще пожалуйста как реализовать запуск сценария в зависимости от версии операционной системы. Примерно так: определение операционной системы, если windows XP, переход на выполнение сценария1, если не windows XP (все что старше), то переход на выполнение сценария2. Когда то натыкался на пример, сейчас не могу найти

Всего записей: 420 | Зарегистр. 19-03-2009 | Отправлено: 03:08 13-12-2020
khasia



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

Цитата:
pushd "%~dp0"
VER | FINDSTR /IL "5.1." > NUL
IF %ERRORLEVEL% EQU 0 (SET x=>WinXP.txt) else (SET x=>OtherOS.txt)

или так:

Цитата:
pushd "%~dp0"
net config workstation | find /i "Windows 2002"
if %errorlevel% == 0 (SET x=>WinXP.txt) else (SET x=>OtherOS.txt)

Всего записей: 2244 | Зарегистр. 18-02-2010 | Отправлено: 06:29 13-12-2020
Fenrizz



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

Цитата:
Подскажите пожалуйста вот есть команда создания нового пользователя например net user User 1 /add. А есть ли какой то способ создания пользователя так чтобы папка пользователя сразу начала появляться в папке Users?  

А если запустить что-нибудь из-по этого пользователя - не создастся автоматически?  

Цитата:
runas /user:User1 cmd.exe  

Всего записей: 360 | Зарегистр. 12-09-2017 | Отправлено: 10:51 13-12-2020 | Исправлено: Fenrizz, 10:51 13-12-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
http://forum.ru-board.com/topic.cgi?forum=5&topic=48565&start=3300#2

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

Всего записей: 2988 | Зарегистр. 18-04-2005 | Отправлено: 11:52 13-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Профиль создался, но требует ввода пароля, можно ли ввести пароль тоже командой?
 
Добавлено:
Вообщем runas не подходит, но можно psexec. С ним работает. Команда такая psexec  -u (Пользователь профиль которого нужно создать) -p ПАРОЛЬ КОМАНДА (можно запустить ping). Но перед этим для автоматизации процесса нужно занести запись в реестр команда такая   Reg.exe add "HKCU\Software\Sysinternals\PsExec" /v "EulaAccepted" /t REG_DWORD /d "1" /f

Всего записей: 420 | Зарегистр. 19-03-2009 | Отправлено: 01:36 14-12-2020 | Исправлено: mat86, 01:44 14-12-2020
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну а просто параметр  /accepteula не подходит разве?

Всего записей: 3333 | Зарегистр. 23-04-2009 | Отправлено: 06:23 14-12-2020
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос.
 
В батнике производится нумерация от 0 (или 1) до значения %Max% включительно.
Числа, в которых меньше цифр чем в %Max%, должны дополняться приставкой с нужным количеством нулей.
Например, у числа Num=5 меньше цифр, чем у Max=999, тогда оно преобразуется в StrNum=005.
 
Если операцию по высчитыванию количества цифр и приставлению нулей делать через цикл, то при многократном повторении это занимает много лишнего времени. Поэтому сейчас использую способ из двух команд:
 
Set /a StrNum=1%Max%-Max+Num
Set StrNum=%StrNum:~1%
 
Но наверняка есть более хитрый способ, который выполняется всего одной командой, вот только не могу сообразить как? Подскажите, пожалуйста...

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 10:45 14-12-2020
GCRaistlin



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

Код:
 
set a=000%a%
set a=%a:~-3%
 


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

Всего записей: 2988 | Зарегистр. 18-04-2005 | Отправлено: 11:01 14-12-2020
Fenrizz



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

Цитата:
Профиль создался, но требует ввода пароля, можно ли ввести пароль тоже командой?  

В шапке темы по Encrypted RunAs аналоги:
 
CPAU | AdmiLink | RunasSpc | SuDo

Всего записей: 360 | Зарегистр. 12-09-2017 | Отправлено: 11:09 14-12-2020 | Исправлено: Fenrizz, 11:09 14-12-2020
A27

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

Цитата:

Код:
set a=000%a%
set a=%a:~-3%

Не понимаю как тут реализовано определение количества нулей, подставляемых к переменной 'a', в зависимости от разных значений переменной 'Max' (99, 500, 999, ..., 999999, ...).
 
 
Просьба, кто может, проверить наличие бага(?) на Windows 7 англ. и рус. локализации, и на Windows 10 любой локализации:
 
Батник:

Код:
@Echo Off
For /f "Tokens=*" %%A in ('Reg Query HKCU\Software /ve') do Echo For1=%%A
Echo.
For /f "Skip=1 Tokens=*" %%A in ('Reg Query HKCU\Software /ve') do Echo For2=%%A
Echo.
For /f "Skip=2 Tokens=*" %%A in ('Reg Query HKCU\Software /ve') do Echo For3=%%A
Echo.
Pause

У меня Windows 7 русская: При использовании вывода Reg.exe в цикле For без параметра Skip выводятся две строки. С параметром Skip=1 первая строка не пропускается и выводятся тоже две строки. А с Skip=2 пропускается только первая строка.
Это не имело бы логики, даже если первая строка была пустой, ведь For всегда пропускает пустые строки, независимо от параметра Skip.

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 23:10 16-12-2020 | Исправлено: A27, 23:11 16-12-2020
GCRaistlin



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

Цитата:
Не понимаю

set /?
 

Цитата:
ведь For всегда пропускает пустые строки, независимо от параметра Skip

Сначала применяется параметр skip, а уже потом отбрасываются пустые строки.

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

Всего записей: 2988 | Зарегистр. 18-04-2005 | Отправлено: 23:28 16-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

Компьютерный форум 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