Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd) 2

Автор: Widok
Дата сообщения: 19.11.2007 11:08
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.


Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!

Примечание: Большие куски кода заключайте в тэг [no][more][/no]

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5

Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)

[more=Старая версия первого сообщения]Я тут бьюсь уже пару дней над одной задачкой... пока дельного ничего не вышло. Давайте сообща подумаем?
И так. При каждой перезагрузке системы (ХР) по сценарию выхода создается REG файл определенной ветки реестра (команда REG) и кладется в определенную папку. При каждой загрузке системы надо чтобы самый последний!! созданный из REG файлов экспортировался обратно в реестр, той же командой.
Чего хочу (задача): так как файлов REG накапливается много, при экспорте надо определить самый свежий из них, т.е какой строкой (командой, способом) оределять этот последний файл. Не плохо бы еще чтобы по истечении, к примеру 10 дней, старые файлы REG удалялись. Можно ли реализовать это все через батники, или я размечтался?

ЗЫ. пробовал создавать список REG файлов, потом к примеру его можно отсортировать, но как выполнить только первую строку из списка файлов... запускаются на выполнение все REG файлы, а надо то один и самый последний... (А у меня... Мандриан. (С) Булгаков. Собачье сердце). Если горбато объяснил, не поленитесь пните, тока не больно ;-)[/more]
Автор: 01MDM
Дата сообщения: 19.11.2007 11:32
Нашел утилиту для вывода esc-sequences в консоль. Аналог HSPacket, но на мой взгляд более гибкая в применении

Cкрин: http://img249.imageshack.us/img249/664/ansiconox6.png (43.5kb)
Скачать: ansicon (21kb)
Автор: mail300
Дата сообщения: 19.11.2007 18:02
Добрый вечер.
Помогите, пожалуйста с батником.
Есть папка, куда падают файлы отчетов. Они имеют вид типа U111-S222.rpt. То есть всегда состоят из 2х частей, разделенных знаком "-". Одна часть - код подразделения, вторая - тип отчета. Нужно пересортировать эти файлы - получить вторую часть имени (S222), сделать папку с таким именем, а в ней папку с именем по первой части (U111) и переложить туда этот файл.
Спасибо.
Автор: Elroir
Дата сообщения: 19.11.2007 18:34
mail300

Код:
@echo off
for /f "tokens=1,2 delims=-." %%a in ('dir /a-d /b *.rpt') do (
md "%%b\%%a" 2>nul
move "%%a-%%b.rpt" "%%b\%%a\"
)
Автор: mail300
Дата сообщения: 19.11.2007 18:51
Спасибо, Elroir!!
Супер! Чтоб я так умел! (буду учиться...)
Автор: mail300
Дата сообщения: 20.11.2007 08:22

Цитата:
Код:
@echo off
for /f "tokens=1,2 delims=-." %%a in ('dir /a-d /b *.rpt') do (
md "%%b\%%a" 2>nul
move "%%a-%%b.rpt" "%%b\%%a\"
)
Запускать из директории с отчетами.


Поясните начинающему, плиз, если не лень, эту часть
('dir /a-d /b *.rpt').
Help читал, все равно не понимаю как это работает: dir /a-d /b
Автор: Elroir
Дата сообщения: 20.11.2007 08:42
mail300

Цитата:
Поясните начинающему

Ну команду dir, ты знаешь. У нее есть ключи:
/b - выводить список файлов и/или директорий простым списком - т.е. только названия без дополнительной информации.
/а - выводить информацию только о тех файлах/директориях у которых установлены аттрибуты указанные после а. Если перед буквой аттрибута стоит дефис - это означает "кроме файлов/директорий с таким аттрибутом". В данном случае ключ /a-d означает "все, кроме директорий".
Ну а то, что вся команда в скобках и в одинарных кавычках - это уже синтаксис команды for.
Автор: audi6
Дата сообщения: 20.11.2007 20:26
KapralBel

я даже с таким словом незнаком,
просто нажимаю на мыше правую кнопку, потом на редактировать,
и бат автоматом через блокнот открывался,
а сейчас пишет что нельзя Отправлено: 20:12 13-11-2007


KapralBel

Цитата:
audi6
Скриншот ошибки приведи



Автор: KapralBel
Дата сообщения: 20.11.2007 23:05
audi6
Рахмат.... это по каковски?

дай команду cacls "C:\WINDOWS\NTFS CONVERTER.CMD" >C:\Log.txt
и сюда содержимое файла C:\Log.txt

90% что у тебя прав на чтение его нет...

Ты в сети?
Автор: DenRassk
Дата сообщения: 21.11.2007 13:05
не пинайте пожалуйста сразу ногами... может кто знает где можно найти инфу по командам в ярлыках?
У меня есть задача, сделать так, чтобы при запуске ярлыка выскакивало окно с запросом параметров (в него забивают имя файла, каждый раз новое и сгенерить его не получится), потом это имя передается в батник и он в процессе работы формирует файл с этим именем.
В Win98 это решалось просто:
в свойствах ярлыка - в поле Объект - после командной строки ставим знак ? и все работало. Например так c:\dfr.bat ?
В ХРшке это не работает...

Может кто знает как это сделать?
Автор: 01MDM
Дата сообщения: 21.11.2007 13:34
DenRassk

Цитата:
выскакивало окно

Если окно консольное, то

Код:
@echo off
if %1==? set /p par="enter parameter(s): "
echo ...Running script with parametr(s): %par%
pause
Автор: DenRassk
Дата сообщения: 21.11.2007 15:11
01MDM
Понятно, попробую.... я так понимаю это будет запрос в ДОС окне?
А чтоб виндовое окно выскакивало (как в 98ой) - так можно сделать?
Девченки уже привыкли к нему ...
Автор: Elroir
Дата сообщения: 21.11.2007 15:49
DenRassk

Цитата:
А чтоб виндовое окно выскакивало (как в 98ой) - так можно сделать?

Можно, с помощью дополнительных утилит, таких как HS_MESSAGE из "Пакета утилит для организации интерфейса в bat-файлах" (ссылка в шапке).
Автор: AndrewPfaifer
Дата сообщения: 21.11.2007 17:37
возможно не в тот топик обращаюсь, у меня реал проблемы с поиском по рубоарде

какая команда исполняется при нажатии комбинации WIN+L
Автор: Elroir
Дата сообщения: 21.11.2007 18:29
AndrewPfaifer
Скажем так - не совсем в тот топик.
При нажатии WIN+L выполняется функция LockWorkStation из библиотеки user32.dll.
Вручную можно запустить так:

Код: rundll32.exe user32.dll,LockWorkStation
Автор: vvnet
Дата сообщения: 21.11.2007 18:37
Подскажите , как в командных файла можно организовать автоответ на запорс подтверждения. Вобще мне нужно перезапустить службу (и помощью батника) , в командной строке надо набрать "net stop slsvc" а потом "net start slsvc" .Но проблема в том , что при вводе первой команды вылазит запрос , типа Y или N . Как организовать автоответ?
Автор: Elroir
Дата сообщения: 21.11.2007 19:11
vvnet
Попробуй так:

Код: echo y|net stop slsvc
Автор: audi6
Дата сообщения: 21.11.2007 19:59
KapralBel


Цитата:
Рахмат.... это по каковски?

дай команду cacls "C:\WINDOWS\NTFS CONVERTER.CMD" >C:\Log.txt
и сюда содержимое файла C:\Log.txt

90% что у тебя прав на чтение его нет...



привет,это всё на немецком,я написал как ты показал в бат файле и запустил ,на с: появился лог.текст ,а в нем
....cacls может быть выполнен только на с дисководах , которые используют систему файла NTFS.,.так что права я имею ,но с компъютером работаю только 1 год ,так пока ещё учусь
помоги
Автор: KapralBel
Дата сообщения: 21.11.2007 23:53
audi6

notepad "C:\WINDOWS\NTFS CONVERTER.CMD"
что дает?
Автор: Elroir
Дата сообщения: 21.11.2007 23:58
audi6
Вообще с этим файлом что-нибудь можно сделать? Типа скопировать, переименовать или перенести куда-нибудь?
Автор: s800
Дата сообщения: 22.11.2007 02:04
Добрый день. Вопрос знатокам надо:
написать скрипт который
1. Подключаеться к Internet (DialUp имя_ соеденения)
2.заходит на определенный адрес в инете,
3. далее на странице надо, осуществить переход по другой ссылке
открыть пример www.yandex.ru
перейди затем http://moikrug.ru/mates/school/russia/?from=yandex_main&geo=77
4.отключаемся от internet
5.дальше цыкл повторяеться??
Возможно ли это реализовать?

пока нашел только это
з.ы Спасибо
Автор: Aldares
Дата сообщения: 22.11.2007 06:57
Писал ужев старой теме.
Нужно составить список доступных дисков.
Например, так.


Код: cls
for %%d in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do (dir %%d: && set zz=%zz%,%%d)
echo %zz%
pause
Автор: Nitrogen
Дата сообщения: 22.11.2007 08:11
s800
на некую страницу нужно зайти с целью того, что бы рефер нужный был?
пробуй netcat-ом это сделать
Автор: Maza Faka
Дата сообщения: 22.11.2007 08:21
Aldares
Вот так работает:

Код:
@echo off
setlocal enabledelayedexpansion

for %%d in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d

echo %zz%
Автор: Aldares
Дата сообщения: 22.11.2007 08:56
Maza Faka
Воистину работает !
Только вывод выглядит как
Код: ,c ,d ,e ,l ,p ,t ,x ,z
Автор: s800
Дата сообщения: 22.11.2007 08:59

Цитата:
netcat-ом это сделать


Программа: Netcat 1.1 for Win 95/98/NT/2000
**************************************************************************
netcat - простая утилита, которая читает и пишет данные на концах сетевых подключений, используя TCP или UDP протокол.

[more]Программа может непосредственно использоваться или легко управляться в соответствии с другими программами и сценариями. ПО Netcat используется не только для прояснения всякого рода подозрительных ситуаций, но и как сканер портов и средство общей диагностики. С его помощью вы сможете проверять работу сетевых приложений, тестировать соединения в процессе формирования списков контроля доступа (ACL) для маршрутизаторов и межсетевых экранов, а также идентифицировать протоколы. Например, задействуя Netcat в качестве клиентского ПО, можно извлекать исходные (raw) HTTP-страницы посредством команды nc <рассматриваемый узел> 80 и введения HTTP-запросов GET вручную. Возможно, это и не такое уж великое достижение (то же самое проделывают и с помощью telnet), но только Netcat способен выдавать "сырую" информацию, не обращая внимания на всякие контрольные символы и последовательности [/more]
**************************************************************************
Она?
как реализовать подключение и отключение DialUP может с помощью программы дозвона VDialer - например??
Автор: 01MDM
Дата сообщения: 22.11.2007 09:28
Aldares

Код:
@echo off
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
    if exist %%i:\autorun.* del /a %%i:\autorun.* 2>nul
)
Автор: Aldares
Дата сообщения: 22.11.2007 11:20
Попробую вечером .
А что значит двойка перед перенаправлением в nul ? Отправлять туда же собщения об ошибках ?
Автор: AndrewPfaifer
Дата сообщения: 22.11.2007 11:53
Elroir
Спасибо

а теперь мне надо команду которая сама бы логинилась, через назначенные задания в нужное время, без админа

Автор: vvnet
Дата сообщения: 22.11.2007 12:45
Немного разобрался , достаточно было в конце поставить /Y . Выгдядит так: net stop slsvc /Y . но теперь еще один вопрос. Как сделать что бы при запуске не открывалось окно командной строки с отображением происходящего. Пробовал вначале echo off - не помогает . моеже есть кокой-то режим , типа silence ?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.