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

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

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

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Переход из 32-битной версии cmd.exe в 64-битную

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
HaK1R



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

Цитата:
с шапки не брал? ->  

взял, ссылка работает

Цитата:
тока мне надо в конце каждого файла (файл является ярлыком - *.lnk) удалить слова с пробелом перед ним "_Управление" (ПОДЧЕРКИВАНИЕ - означает пробел)  

в смысле из "Привет тебе.lnk" нкжно "тебе .lnk"?
Цитата:
еще... вверхнем коде raport.txt (лог) пишится в кодировке 866, можно ли как-нить его писать в 1251?  

там где идет запись в файл, перед этой строчкой поставь новую строчку с chcp 1251 1>nul
а после строчки записи поставь строчку с chcp 866 1>nul
 
 
попробуй так

Код:
set ServerName=192.168.0.1
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
  ping -n 1 "%%i" | find /i "TTL="
)
pause  
пишет что-нибудь?
 

Цитата:
а как этим же (1.bat - который создает и запускает 2.bat) батником узнать PID зпущеного батника 2.bat (cmd.exe) если сам 1.bat так же висит в прцессах (!возможно не толбько он!)...

сегодня попозже выложу
 

Цитата:
Нашел трабл... красным цветом  

это ничего не меняет, тоже самое
 
Добавлено:

Цитата:
сегодня попозже выложу  

не выложу, тока завтра

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 21:15 16-06-2009
HaK1R



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

Код:
@echo off
setlocal enabledelayedexpansion
 
REM блаблабла
call :SeeProcess
REM запускаешь 2.bat
REM blablabla
call :KillProcess
REM blablabla
goto :EOF
 
:SeeProcess
for /f "tokens=2" %%i in ('tasklist ^| findstr /b cmd.exe') do (
  set "PROCESSOR_PID=!PROCESSOR_PID!,%%i"
)
set "PROCESSOR_PID=%PROCESSOR_PID:~1%"
goto :EOF
 
:KillProcess
for /f "tokens=2" %%i in ('tasklist ^| findstr /b cmd.exe') do (
  set "kill=1"
  for /f "tokens=*" %%a in ('set PROCESSOR_PID ^| findstr "%%i"') do (
    set "kill=0"
  )
  if !kill!==1 (taskkill /PID %%i 1>nul 2>&1)
)
goto :EOF

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 17:44 17-06-2009
New_KoMa

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
здравствуйте, помогите написать батник..
требуется извлечь из ветки регистра, например из HKLM\SOFTWARE\MyProg, значение ключа, например ключ=ExeсString - полный путь файла, и запустить это значение.

Всего записей: 83 | Зарегистр. 27-05-2009 | Отправлено: 17:52 17-06-2009
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
New_KoMa
из комстроки:

Код:
cmd /c for /f "tokens=2*" %a in ('reg query "HKLM\SOFTWARE\MyProg" /v ExeсString ^|find /i "ExeсString"') do (start "" "%b")

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 18:40 17-06-2009 | Исправлено: Rush, 18:41 17-06-2009
New_KoMa

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

Цитата:
из комстроки:

спасибо за отклик, вот что выдает:
c:\>cmd /c for /f "tokens=2*" %a in ('reg query "HKLM\SOFTWARE\MyProg" /v ExecString ^|find /i "ExecString"') do (start "" "%b")
Непредвиденное появление: |.

Всего записей: 83 | Зарегистр. 27-05-2009 | Отправлено: 20:24 17-06-2009 | Исправлено: New_KoMa, 20:25 17-06-2009
Ortios



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

Код:
for /f "tokens=2*" %a in ('reg query "HKLM\SOFTWARE\MyProg" /v ExecString ^|find /i "ExecString"') do (start "" "%b")

 
 

Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 20:35 17-06-2009
New_KoMa

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

Всего записей: 83 | Зарегистр. 27-05-2009 | Отправлено: 20:39 17-06-2009
Ortios



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, извиняюсь за оффтоп, есть у кого-нить книжка А.Попова "Администрирование Windows с помощью WMI и WMIC" , есстесно в цифровом виде, поделитесь ссылочкой.

Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 21:01 17-06-2009
Maza_Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ortios
Во первых, для этого есть отдельный раздел
А во вторых Google ещё не отменили

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:53 18-06-2009
ScreamWolf



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

Цитата:
в смысле из "Привет тебе.lnk" нкжно "тебе .lnk"?

из "Привет тебе.lnk" получить "Привет.lnk"

Цитата:
попробуй так  
 
Код:
set ServerName=192.168.0.1  
for /f "tokens=1* delims==" %%h in ('set ServerName') do (  
  ping -n 1 "%%i" | find /i "TTL="  
)  
pause  

попробовал вот что пишет
 

Цитата:
C:\>set ServerName=10.150.101.1
 
C:\>for /F "tokens=1* delims==" %h in ('set ServerName') do (ping -n 1 "%i"   |
find /i "TTL=" )
 
C:\>(ping -n 1 "10.150.101.1"   | find /i "TTL=" )
Ответ от 10.150.101.1: число байт=32 время<1мс TTL=31
 
C:\>pause
Для продолжения нажмите любую клавишу . . .

т.е. find работает... но если подставлять после if %errorlevel% - то не хочет работать ((
 

Цитата:
это ничего не меняет, тоже самое

согласен, но почему-то без "==" не работает ((

Цитата:
вместо коментов ставишь свой код

ОГРОМНОЕ СПАСИБО - РАБОТАЕТ НА УРА =)
 
 
Добавлено:
HaK1R
 

Цитата:
вместо коментов ставишь свой код

А можно ли после того как 1.bat определил 2.bat его PID записать его например в лог или реестр... необходимо для того что бы при запуске например отдельного батника 3.bat он в логе искал pid и завершал данный процесс (2.bat)...
 
Добавлено:
Подскажите токой вопрос...
 
мое представление:
работа ведеться с батником... в батником создается скрипт и запускается
сам скрипт это появление окна с 2-я кнопками
текст на кнопках должен быть мой! т е не ОК и CANCEL и т.д. лично в моем случае что-то вроде "PC" и "ID" и в зависимости от выбора пользователем кнопки обратно в батник возвращаеться код типа 0 или 1 или там переменная ну в общем как батнику потом определить какую клавишу выбрал юзер...
 
вот
 
думаю нормально поставил вопрос... не ругайтесь зря...

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 10:24 18-06-2009 | Исправлено: ScreamWolf, 10:26 18-06-2009
HaK1R



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

Код:
setlocal enabledelayedexpansion
set ServerName=192.168.0.1  
for /f "tokens=1* delims==" %%h in ('set ServerName') do (  
  set /a error=1
  for /f "tokens=*" %%i in ('ping -n 1 "%%i" ^| find /i "TTL=" 2>&1') do (set /a error=0)  
  if !error!==1 (  
    echo %date% %time:~0,8% Сервер %%i - недоступен  
  ) else (  
    echo %date% %time:~0,8% Сервер %%i - доступен  
  )  
)  

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 13:24 18-06-2009
o00oalex

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте! У меня вопрос к знатокам. Как реализавать в bat или cmd запуск mstsc.exe с вводом ip, логина и пароля. Чтобы сразу запускался консольный вариант и не спрашивал данные пользователя. Спрашиваю потому что параметрами самого mstsc такого не сделать. Вариант с сохранением настроек в файл rdp не предлагать, т.к. предполагается запускать этот скрипт на др. машинах, а в этом случае пароли в rdp сбрасываются. Спасибо.

Всего записей: 6 | Зарегистр. 18-06-2009 | Отправлено: 16:27 18-06-2009 | Исправлено: o00oalex, 16:37 18-06-2009
HaK1R



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

Цитата:
в смысле из "Привет тебе.lnk" нкжно "тебе .lnk"?
 
из "Привет тебе.lnk" получить "Привет.lnk"  

 
Работает только на одном уровне

Код:
@echo off
pushd "C:\1\"
for /f "tokens=1*" %%a in ('dir /b *.lnk') do ren "%%~fa %%b" "%%~a%%~xb"
popd

Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 17:35 18-06-2009
DimaMag



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток. Если не сложно, подсобите.
Задача
Есть многотомный архи созданный архиватором 7z , количество томов не постоянно. Нужно отправить его по почте причём каждый том отправляется отдельно программой postie. Как это написать в bat ?
 
------------
Заранее спасибо.

Всего записей: 379 | Зарегистр. 11-03-2005 | Отправлено: 08:18 19-06-2009
vasijapupkin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как можно обработать строку содержащую путь, чтобы удвоить слеши. Например:
 
На входе: C:\WINDOWS\SYSTEM32
 
На выходе: C:\\WINDOWS\\SYSTEM32

Всего записей: 2 | Зарегистр. 04-08-2005 | Отправлено: 15:05 19-06-2009
01MDM



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

Код:
 
set "somepath=C:\Windows\system32"
set "somepath=%somepath:\=\\%"
echo %somepath%
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:55 19-06-2009 | Исправлено: 01MDM, 15:56 19-06-2009
vasijapupkin

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

Цитата:
Код:  
set "somepath=C:\Windows\system32"  
set "somepath=%somepath:\=\\%"  
echo %somepath%  
 

 
Огромное спасибо! Не понял как это работает, но премного благодарен за столь оперативный ответ.
 
Update:
Почитал хелп. Как обычно, все гениальное просто.

Всего записей: 2 | Зарегистр. 04-08-2005 | Отправлено: 17:14 19-06-2009 | Исправлено: vasijapupkin, 17:56 19-06-2009
bredonosec



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в общем, есть задача, которую как понимаю, батником решить можно:
 
собрать имена включенных машин поддомена
на всех стартануть службу сообщений,  
послать от себя указанное заранее (переменной чтоб запрашивало) сообщение
остановить службу сообщений
 
старт службы знаю, sc start messenger
послать - тож знаю, net send [кому, нетбуй имя] [что]
 
- а в остальном - дремучий лес, толстые пертизаны ((

----------
Вопрос: 'Что человек курит?' как правило возникает не когда ты слышишь, как он дышит, а когда видишь, что он пишет
Пропеллер играет роль вентилятора, он останавливается -пилот потеет
Аськи нету.

Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 15:44 22-06-2009
waterbladeMASTER

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Люди добры помогите плиззз,  ниче не получается(
 
нужно написать bat-скрипт который выводит на экран список файлов в папке %1 и ее подпапках, длина пути к которым (вместе с именем файла) превышает 230 символов. за основу взять : dir /s /b

Всего записей: 2 | Зарегистр. 26-05-2008 | Отправлено: 16:08 22-06-2009
o00oalex

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Выручайте!!!
Как прописать в батнике пароль, для последующей вставки, в котором содержутся символы ^ % # $ и т.д. Как прописать пробел я знаю - надо весь текст заключить в %. А вот как быть с этими знаками?

Всего записей: 6 | Зарегистр. 18-06-2009 | Отправлено: 17:36 22-06-2009
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru