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

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



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста....  
Как решить такую задачу:  
есть папка "IN" в ней папки вида "01 Январь" "02 Февраль" итд. В папку "IN" постоянно падают файлики *.msg. Нужно раскладывать файлики по дате создания... но так чтоб не учитывать год (для того чтоб получилось универсально)  
То есть нужно чтоб файлы которые появились, скажем в январе, оказались в папке "01 Январь" и при этом имя папки куда должен в итоге попасть файл должно определятся только по первым двум цифрам в данном случае "01" и не обращать внимания на остальное название папки (потому как вместо "Январь" там может быть все чт угодно)...  

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 16:49 06-12-2009
01MDM



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

Код:
 
@echo off
setlocal
 
for %%i in (*.msg) do (
    for /f "tokens=2 delims=." %%j in ("%%~ti") do (
        2>nul md %%j  
        move "%%i" %%j
    )
)
 

Если конечные папки существуют, то зеленую строчку можно убрать.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:06 07-12-2009
MothROM2



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет, помогите с задачкой:
Скрипт, должен заблокировать всех локальных пользователей на ПК, кроме локального админа, а ему самому сменить пароль.
 
Проясню ситуацию, все компьютеры находятся в домене, пользователи тоже доменные, локальных пользователей быть не должно, пароль у локального админа во избежание должен меняться довольно часто.
 
Скрипт будет выполняться в групповой логон-политике. Я вообщем представляю как сделать с помощью внешних утилит эту процедуру, но пока не нашел как скрыть пароль в скрипте.
 
Если у кого есть наработки, поделитесь плз.

Всего записей: 50 | Зарегистр. 12-10-2004 | Отправлено: 11:14 07-12-2009 | Исправлено: MothROM2, 15:44 07-12-2009
FGHGJGJSD22

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как сделать чтобы батник запускал сам себя - определенное количество раз ? допусти ставишь 200 цыфру - он выполняет весь код и птом опять начинает выполнять код с начала (и так 200 раз).

Всего записей: 44 | Зарегистр. 09-07-2007 | Отправлено: 20:30 07-12-2009
01MDM



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

Код:
 
@echo off
setlocal
 
set /a "cnt=%1-1"
 
:: Здесь тело батника
echo %cnt%
::  
 
if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)
 

Запускаешь с аргументом (например your.cmd 10)

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:21 07-12-2009
FGHGJGJSD22

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
никак не идет... и про аргумент не понял (сори за тупость)
 
вот пример батника выводит в окне слово - Проверка
--------------------------
Chcp 1251
msg * Проверка
cls
--------------------------
как допустим сделать чтоб этот батник запускался 5 раз к примеру

Всего записей: 44 | Зарегистр. 09-07-2007 | Отправлено: 21:59 07-12-2009 | Исправлено: FGHGJGJSD22, 21:59 07-12-2009
01MDM



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

Код:
 
C:\> this.bat 5  
 

Где 5 - кол-во раз для выполнения

Код:
 
@echo off
setlocal
 
set /a "cnt=%1-1"
 
:: Здесь тело батника
chcp 1251 1>nul  
msg * "Проверка %cnt%"
::  
 
if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)
 

Правда с msg не совсем удачный пример, попробуй вместо него "start notepad"

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:33 07-12-2009
FGHGJGJSD22

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
@echo off
setlocal
 
set /a "cnt=%1-1"
 
start notepad
 
if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)
 
сохранил это код как this.bat(блокнот он запускает все нормально) положил на диск С
ввожу в ком строке -  C:\> this.bat 5  или     start C:\> this.bat 5   - неработает
-------------------------
start C:\> this.bat 5        или            C:\> this.bat 5
 
@echo off
setlocal
 
set /a "cnt=%1-1"
 
start notepad
 
if %cnt% leq 0 (goto:eof) else (cmd /b /c %0 %cnt%)
 
сограняю и запускаю как батник - опять не идет....
может мне куда то надо вот эту строку вставить ?
set "PATH=%PATH%;C:\Program Files\GnuWin32\bin"

Всего записей: 44 | Зарегистр. 09-07-2007 | Отправлено: 23:16 07-12-2009
scorpiorxx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем! Кому не жалка помогите пожалуйста! Устал делать все руками!
Вообщем есть каталог, в каталоге много подкаталогов, в которых файлы *.xls, нада скинуть самый большой файл на сетевой диск Н, и переименовать его в название каталога и дату создания файла, а забыл дописать чтоб в этом подкаталоге удалить все файлы после  Хелп....а там таких файликов штук 300-400
 
Например: garant_081209.xls  Спасибо большое заранее!!

Всего записей: 2 | Зарегистр. 08-12-2009 | Отправлено: 13:41 08-12-2009 | Исправлено: scorpiorxx, 13:52 08-12-2009
CTACKo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, кто знает, как с помощью |more можно нажать ентер?  
Когда-то очень давно в печатной периодике видел пример командника, но не помню и найти нигде не могу. Суть в том что в команднике запускается некая программа и она дальше ничего не делает пока ей тупо не нажмешь ентер. И был показан пример командной строки для такого случая с использованием |more в котором ентер какбы "сам нажимался" благодаря некоей хитрости работы more.  
ЗЫ. Нашел только что echo|more генерирует EOL т.е. какбы нажатие Ентер. Но как это использовать - не пойму...
 
спасибо

Всего записей: 180 | Зарегистр. 05-09-2008 | Отправлено: 03:48 09-12-2009
FGHGJGJSD22

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CTACKo
 
nircmd.exe sendkey 13 press
 
Должна стоять(скачать и поставить) утилита nircmd
13 - это код клавиши энтер(можно и другие клавиши нажимать - просто ставишь соответств код клавиши)
 
01MDM
 
Обьясни пожалуйста на пальцах по моему вопросу - не как не идет...туплю по черному...
Не как 5 раз не хочет запускаться блокнот....

Всего записей: 44 | Зарегистр. 09-07-2007 | Отправлено: 11:22 09-12-2009
Maqentaer



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

Код:
echo|program.exe

 

Всего записей: 71 | Зарегистр. 18-05-2008 | Отправлено: 12:17 09-12-2009 | Исправлено: Maqentaer, 12:18 09-12-2009
CTACKo

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

Всего записей: 180 | Зарегистр. 05-09-2008 | Отправлено: 13:16 09-12-2009
Ortios



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

Цитата:
Подскажите, кто знает, как с помощью |more можно нажать ентер?  
Когда-то очень давно в печатной периодике видел пример командника, но не помню и найти нигде не могу. Суть в том что в команднике запускается некая программа и она дальше ничего не делает пока ей тупо не нажмешь ентер. И был показан пример командной строки для такого случая с использованием |more в котором ентер какбы "сам нажимался" благодаря некоей хитрости работы more.

В одной из книг Б.Богумирского о MS-DOS году этак в 1995 я встречал упоминание о трюке позволявшем нажимать Enter. Точно не помню что и как, но говорилось по-моему о такой конструкции:
Если в батнике просто написать Time > file.txt, то он просто зависнет ожидая ввода времени. А если использовать констукцию echo | more | time | find /v "Enter", то сэмулируется нажатие Enter и выполнение батника пойдет дальше. Самого батника вспомнить сейчас не могу, но работало все четко. До самой книжки доберусь не раньше чем через неделю, когда выйду на работу.

Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 13:45 09-12-2009
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FGHGJGJSD22
по поводу задачи на запуск нужное число раз - ее наверное проще реализовать так
Код:
@ECHO OFF
IF "%1"=="" (SET /a "CNT=0") ELSE (SET /a "CNT=%~1")
IF %CNT% LEQ 0 EXIT
FOR /L %%i IN (1,1,%CNT%) DO (START notepad.exe)
EXIT

 
Добавлено:
А тело поместить на метку после EXIT и вместо start notepad вызвать call :метка

----------
Всем непричастным рекомендую прогулки на свежем воздухе

Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 14:10 09-12-2009
Altus

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ortios
Если я правильно понимаю, то "ентер"(перевод строки) получается от ответа команды "echo".
Потому с той же эффективностью будет работать например: "time /t | time > file.txt", или "echo on | time > file.txt", или "echo off | time > file.txt"

Всего записей: 328 | Зарегистр. 06-09-2006 | Отправлено: 14:38 09-12-2009 | Исправлено: Altus, 14:41 09-12-2009
Ortios



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Altus
Правильно понимаешь . Просто эта конструкция echo | more | time | find /v "Enter" мне запомнилась и привел я ее без учета контекста.

Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 15:12 09-12-2009 | Исправлено: Ortios, 15:13 09-12-2009
alers

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, можно ли как нибудь к файлу png.txt, в который записываются пинги по команде ping X.X.X.X -t >png.txt,  добавлять текущее время в начало или конец строки
ну чтобы было как то так:
Time Ответ от X.X.X.X: число байт=32 время=11мс TTL=253♪
или
Ответ от X.X.X.X: число байт=32 время=20мс TTL=253 Time

Всего записей: 14 | Зарегистр. 09-07-2007 | Отправлено: 15:56 09-12-2009
dskj

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как можно задать уже в командной строке то что хочу скопироватьи возможно ли такое? Например

Код:
C:\> copyall.bat test  

где test то что нужно скопировать. На данный момент у меня так* и мне приходится каждый раз лазить в батник и править.
*
Код:
FOR /F " tokens=1 " %%i in (listlan.txt) do xcopy  /E /O "test" "%%i\D$\test\"

Всего записей: 23 | Зарегистр. 25-10-2009 | Отправлено: 16:25 09-12-2009
FGHGJGJSD22

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha
 
некак опять... мне бы полный сразу код... с ифами вообще потерялся...сам не сделаю...
допуситм тело батника =      START notepad.exe
надо сделать чтоб батник запускался 5 раз...
люди помогите))))))))))

Всего записей: 44 | Зарегистр. 09-07-2007 | Отправлено: 19:58 09-12-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