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

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

Автор: slech
Дата сообщения: 25.12.2005 23:13
researcherr
1. Есть утилитка в х-пе встроенная netsh /?
Сам не разбирался, но штука сильная...
2. pv -l
PrcView v 3.7.2.5 command line utility by Igor Nys

Добавлено:
Кто знает как себе поставить батником определённую картинку в качестве обоев ?
Автор: WerGaz
Дата сообщения: 26.12.2005 05:46
igor_andreev - большой рахмат.
Автор: igor_andreev
Дата сообщения: 26.12.2005 08:24
slech

Цитата:
как себе поставить батником определённую картинку в качестве обоев ?

http://www.optimumx.com/download/#SetWallpaper
Автор: Erazer
Дата сообщения: 26.12.2005 10:25
hacsoft
taskkill - говно, не всегда убивает процесс, и его дочерние процессы
pskill - всегда, я по крайней мере еще не сталкивался с обратным , в отличии от taskkill
Автор: researcherr
Дата сообщения: 26.12.2005 14:55
Спасибо всем за помощь.

Проблема в том что запускать и выгружать надо Касперыча персонал 5.156
а он собака создает 2 неименнованных процесса. Позтому при запуске из батника
надо сразу получать оба PIDа. Я так понимаю что таким образом он защищается от выгрузки вирусом. Я запускаю его start-ом, и у меня нет возможности получить PID-ы.
Есть какие мысли на это? Еще раз спасибо.
Автор: Garrett
Дата сообщения: 26.12.2005 16:24
Smitis
Спасибо за wget. Это - то, что нужно.
Автор: HeT BonpocoB
Дата сообщения: 26.12.2005 17:43
есть ли возможность в батнике реализовать что-то вроде Sleep(XX секунд)?? Тоесть что то типа PAUSE, только вместо нажатия кнопки - таймер....
Автор: researcherr
Дата сообщения: 26.12.2005 19:32
HeT BonpocoB

Цитата:
есть ли возможность в батнике реализовать что-то вроде Sleep(XX секунд)?? Тоесть что то типа PAUSE, только вместо нажатия кнопки - таймер....

Вот на здесь рекомендуют:

Цитата:
Стандартного варианта задержки нет, был когда-то choice, с его помощью можно было задержку делать, но теперь его нет (а жал, чем он так не угодил).
Но можно делать так:
Код:ping -n 11 -w 1000 127.0.0.1 > nul
Будет задержка на 10 сек. (за длительность отвечает число 11 - количество секунд задержки + 1).
Если на 2 сек., пиши так:
Код:ping -n 3 -w 1000 127.0.0.1 > nul

Мне этого вролне хватает.

Автор: slech
Дата сообщения: 26.12.2005 22:35
igor_andreev
Спасибо.

HeT BonpocoB
(C) 1999 Vlad Staroselsky (2:5033/4@fidonet)
This program waits of file creating or some number of seconds...

It's almost not getting system resources.

Execute: sleep.exe <file> <NN>, where
<file> - file, we are waiting for
<NN> - number of seconds (1-65535)

чем неподходит ?
Автор: Garrett
Дата сообщения: 26.12.2005 22:51
igor_andreev
Пользуюсь указанными Вами UnxUtils. Но есть проблема, там не работает paste. Где можно найти еще одну реализацию paste для Windows?
Автор: HeT BonpocoB
Дата сообщения: 27.12.2005 00:17
researcherr
Цитата:
Мне этого вролне хватает.
спасибо, мне тоже. В жизниб наверно не додумался до такого
Автор: Accessor
Дата сообщения: 28.12.2005 15:18
Народ, помогите справиться с задачей. Мне нужно получить список файлов (исключая список имеющихся подкаталогов) в текущем каталоге и загнать его в текстовичок. Но есть еще условие, что этот список файлов нужен в чистом виде с именами пользователей, т.е. такой список дает команда "dir /a-d-s /q". Вот, но эта команда дает еще немного бутора в начале своего вывода, и в конце. А этот бутор мне не нужен. Поэтому я беру и пишу следующую команду:
for /f "skip=5 tokens=3" %%b in ('dir /a-d-s /q') do if %%b==. здесь дальше что-то должно быть.
Короче говоря, я этой командой пропускаю первых пять строк, в которых команда dir нам рассказывает про метку тома, серийный номер тома и прочую ботву. А начиная с шестой строки анализирую третий символ, и если он равен точке ".", (я по этому признаку делаю вывод, что это уже идет строка с именем файла) то тогда надо каким-то образом всю строку загонять в текстовик, но как это сделать я не знаю. Прошу вашей помощи.
Автор: Ignat
Дата сообщения: 28.12.2005 16:18
Доброго времени суток!
Описание: Программа под DOS, есть возможность вывода документов на печать ч/з Excel с помощью батника:

@echo off
call C:\Progra~1\Micros~1\Office\excel.exe %1

Проблема: папка Office может быть Office, Office10, Office11, а также если ОС переустанавливали один раз, то - C:\Progra~2\Micros~1\Office\excel.exe, если два, то - C:\Progra~3\Micros~1\Office\excel.exe. Если Офис переустанавливали один раз (или установлен FrontPage), то - C:\Progra~1\Micros~2\Office\excel.exe и т.д. Также папка Program Files может быть переименована, да и вообще находиться на разделе Х:\ .

Задача: написать батник с относительным путем к excel.exe, что-то типа:

call %OFFICE%_PATH%\excel.exe %1 (не работает, наверное и не должен )

Спасибо

P.S. запостил и здесь: темы уж больно схожие

Автор: dasm
Дата сообщения: 28.12.2005 16:26
Accessor
for /f "skip=5 tokens=4,*" %i in ('dir /a-d-s /q') do echo %i %j >> file.txt
Но в конце файла будут лишние строчки:
байт
байт свободно
Как их убрать, пока не знаю.
Автор: jak_forest
Дата сообщения: 28.12.2005 17:02

Цитата:
Но в конце файла будут лишние строчки:
байт
байт свободно
Как их убрать, пока не знаю.

попробуй использовать
findstr с параметром /v

Код:
findstr /v /i "байт"
Автор: dasm
Дата сообщения: 28.12.2005 17:14
Ignat
Путь к офису в переменных не хранится, но его можно выцепить из реестра:

Код:
%echo off
regedit /ea tmp.reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot
for /F "skip=4 tokens=2 delims==" %%i in (tmp.reg) do set Office_Path=%%~fi
del /q tmp.reg
"%Office_Path%excel" %1
Автор: Accessor
Дата сообщения: 28.12.2005 17:36
dasm

Цитата:
for /f "skip=5 tokens=4,*" %i in ('dir /a-d-s /q') do echo %i %j >> file.txt

да, в принципе это уже пол дела, спасибо, только есть вопрос, а что за переменная %j и в какой момент она получает знасение, я что-то не могу понять, откуда оно берется
Автор: Smitis
Дата сообщения: 28.12.2005 23:23
Accessor

Цитата:
а что за переменная %j и в какой момент она получает знасение, я что-то не могу понять, откуда оно берется

Если есть в команде for ключевое слово tokens, строка разбивается на части в соотвествии с задаными разделителями (delims) и присваевает полученные значения переменным по алфавиту, начиная с указанной в команде. Сдесь - %i %j %k %l %m %n и т.д. Рекомендую посмотреть справку по команде FOR

Добавлено:
Ignat
Вопросы лучше не дублируй, а то не понятно, где отвечать.
Автор: Ignat
Дата сообщения: 28.12.2005 23:31
dasm Спасибо!
-Но,
Цитата:
ЗЫ: 11.0 - это версия офиса
, как быть просто с "офисом" и "офис10"? Программа может стоять и на 98, 2к, ХР и 2к3, эта ветка реестра у всех одинаковая?
-Программа, при установке печати ч/з Excel, ругается: "Настройте правильно пути запуска Excel в файле c:\X\common\exfox.bat (путь к поддиректории программы, где лежит батник). Если не обращать внимание на сообщение, то с помощью твоего батника документ на печать ч/з Excel передается! что уже радует. Можно ли еще что-нибудь сделать в плане универсальности и не вывода сообщения программы. В любом случае, еще раз спасибо!
Smitis Я бы не дублировал но темы то схожие! и ответы от разных людей смотрю в обеих
Автор: Accessor
Дата сообщения: 29.12.2005 09:35
дядки, еще подскажите, как мне указать в параметрах delims чтобы разделителями был пробел и точка.
И по моему первоначальному вопросу есть у кого-то какие-то соображения, чтобы довести дело до конца?
Автор: dasm
Дата сообщения: 29.12.2005 19:37
Accessor
Вот это можно было найти по команде help for:

Цитата:

Поясняющий пример:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

эта команда обрабатывает файл myfile.txt, пропускает все строки, которые
начинаются с символа точки с запятой, и передает вторую и третью подстроки
из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или
пробелами
. В теле цикла переменная %i используется для второй подстроки,
%j - для третьей, а %k получает все оставшиеся подстроки после третьей.
Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки.
Для того чтобы использовать двойные кавычки, необходимо использовать
параметр usebackq, иначе двойные кавычки будут восприняты как границы
строки для обработки.

Переменная %i явно описана в инструкции for, а переменные %j и %k
описываются неявно с помощью ключа tokens=
. Ключ tokens= позволяет извлечь
из одной строки файла до 26 подстрок, при этом, не допускается
использование переменных больших чем буквы 'z' или 'Z'. Следует помнить,
что имена переменных FOR являются глобальными, поэтому одновременно не
может быть активно более 52 переменных.

Особо попрошу обратить внимание на выделенный текст.

Ignat

Цитата:
Программа может стоять и на 98, 2к, ХР и 2к3, эта ветка реестра у всех одинаковая?

Скорее всего, да. Для универсальности, прийдется добавить кучу строчек:
regedit /ea tmp10.reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot
.....
regedit /ea tmp5.reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\5.0\Common\InstallRoot
а потом использовать if exist tmpx ... где x=5...11. Да, еще конечно удалить все reg-файлы.
Скорее всего в системе установлен только один офис, поэтому файл будет один. Как по-другому узнать версию офиса, я по не знаю.
Автор: khk
Дата сообщения: 09.01.2006 02:23
Вопрос к знатокам!
Реализую тут насколько умею процедуру обмена с ФТП, споткнулся на сущей ерунде, не могу никак обойти такую проблему:
условно, имеется конструкция вида

:begin
if exist c:\outbox\*005_*.* goto send
goto begin
:send

Под которой подразумевается, что если в c:\output\ что-то есть ,то переходим на метку send. Но только это не работает . if не понимает "*.*" , ей конкретные имена файлов подавай. А в том то и дело что для файлов на отсылку\прием требуется применять маски. Как обойти эти грабли? Заранее спасибо!
А вообще я пытаюсь написать батник с ГАРАНТИРОВАННОЙ доставкой в обе стороны, и чтобы это работало АВТОМАТИЧЕСКИ (принимало и отправляло по шедулеру или по наличию того что отправлять) 365 дней в году без присутствия рядом админов и вообще каких-либо пользователей. Готовых решений увы не нашел
Автор: KapralBel
Дата сообщения: 09.01.2006 10:25
khk
Какая у тебя ОС?
Автор: khk
Дата сообщения: 09.01.2006 11:21
KapralBel
Ceрверная часть - win2003 server, на клиентских машинах ХР Pro или win2000pro
Автор: KapralBel
Дата сообщения: 09.01.2006 11:42
khk

Цитата:
:begin
if exist c:\outbox\*005_*.* goto send
goto begin
:send

Прекрасно все работает и на ХП и на 2003
Приведи сообщение об ошибке
Автор: khk
Дата сообщения: 09.01.2006 11:52
KapralBel

Хм...Это самое, сообщений об ошибках нету. Просто независимо от того лежит ли в проверяемой папке c:\outbox файл с любой маской или нет, if считает что лежит, и данном случае передает управлаение на :send .Но если вместо маски написать к примеру "1.txt" ,то тогда да, все работает как запланировано.
Автор: KapralBel
Дата сообщения: 09.01.2006 12:05
khk
Для данного батника
нет в папке оутбокс никакого файла - идет постоянное выполнение, ложу файл aa005_a.txt - прекращается
Какой файл ты ложишь для проверки по данной маске?
Автор: khk
Дата сообщения: 09.01.2006 12:46
Все спасибо большое, разобрался, действительно работает.....Вчера видимо пересидел за компом и что явно не так проверял
Автор: asup
Дата сообщения: 09.01.2006 20:33
Всем привет!

Я пытаюсь реализовать с помощью ВАТ файлов следующую задачу,
запуск приложения под правами другова польтеля, и при закрытии этого приложения автоматическое выключение компьютера.
У меня не получается реализовать это в виде одного файла, и второе проблема в том что постоянно появляется окно выполнения ВАТ файла, что с ним можно сделать что бы оно не было на переднем плане или всё выполнялось в скрытом виде или хотябы в свернутом что бы пользователь не мог его случайно закрыть.

первый фаил у меня запускает второй фаил с правами админа

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

runas /user:admins /savecred ./a1.bat

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Второй фаил запускает приложение с параметрами и после закрытия приложения выполняет третий ВАТ фаил с командой на выключение машины.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

@ECHO OFF
"D:\Program Files\1Cv77\BIN\1c77.exe" ENTERPRISE /D " .\DemoDB\" /N "user"
./a2.bat
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
В третем файле всё просто, выполняет команду на выключение машины, спомощью внешнего файла с нестандартными ключами.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
.\shutdown.exe" /-1
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

В таком виде всё отлично у меня работает, за исключением двух неудобств которые я написал вначале.
Если возможно это всё сделать удобнее и комфортнее, помогите написать хороший ВАТ фаил. Заранее благадарю! С Новым 2006 Годом!!!


Добавлено:
Я получил ответ но файл до конца не получился....

Цитата:У меня не получается реализовать это в виде одного файла

Текущее имя файла содержится в параметре %0
Будет что-то типа
runas /user:admins /savecred %0
А что бы не было рекурсивного зацикливания предусмотреть дополнительный параметр или переменную.

Для управления окнами можно использовать утилиту CMDOW. Например, команда cmdow @ /hid в командном файле скроет его окно. Можно запускать файлы через ярлык через cmdow /run /hid команда

А вообще, с подобными вопросами лучше наверное сюда http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4582&start=360#lt

Проблема следующая......................

Спасибо Smitis за консультацию!!!
Но у меня не получается выти из зацикливания после %0, притом задачи выполняются непоследовательно а зацикливаются все задачи.....у меня открылось за пару секунд по 50 окон каждой задачи, мне нужна помощь, как это грамотно реализовать??????????
Ещё раз поздравляю со всеми праздниками!
Пожалуйста помогите! Очень надо!
Заранее очень благодарен!

Автор: Da_Neil
Дата сообщения: 24.01.2006 01:08
Необходимо как-то оформить настройки для нескольких батников, как это лучше организовать? Например, можно ограничиться банальным вызывом батника с настройками и SETами выставить нужные параметры или считывать их из текстового файла с определённой структурой. Никто готовых решений или примеров реализации не встречал?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


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