Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 2

Автор: igor_andreev
Дата сообщения: 29.12.2006 17:27
01MDM
Пробовад 4NT очень давно и сразу снес, что-то не глянулась она мне, поэтому не помню как в ней, а для cmd.exe читал в каких-то batch tips&tricks такой совет:

-Сделать батник, обозвать как угодно, например SD.CMD

Код:
@cls
@cd /d %*
@title %CD%
Автор: Sceval
Дата сообщения: 29.12.2006 17:36
Уже пробывал тоже самое

C:\>C:\WINDOWS\system32\xcopy /Q /Y /R /E \\com\Pandion\*.* "c:\Program Files\Pandion"
Invalid number of parameters
0 File(s) copied
Автор: Jon_Dow
Дата сообщения: 29.12.2006 20:07
Настоятельно рекомендую вам выполнить xcopy /? и посмотреть какой из параметров /Q /Y /R /E отсутствует в хелпе... Во всяком случае такое сообщение об ошибке характерно для использования недопустимого параметра...

Осмелюсь предположить что ось под которой вы отабатываете данный скрипт не WinXP?
Автор: sD31337
Дата сообщения: 29.12.2006 22:41
всех с наступающим НГ удачи в новом году!
Автор: burrito
Дата сообщения: 29.12.2006 23:39
Несколько вопросов друзья:

1.
"C:\file.exe" %1 - запускаю приложение
Можно ли мне его теперь остановить? .. своего рода завершение процесса?

2.
Есть ли командочка указывающая временной интервал. ?
Хочу что бы совершалось какое-то действие каждые 5 минут?

Спасибо большое, с ноым годом друзья! =)
Автор: Elroir
Дата сообщения: 29.12.2006 23:59
burrito

Цитата:
Можно ли мне его теперь остановить? .. своего рода завершение процесса?


Код:
taskkill /f /im file.exe
Автор: Nagual
Дата сообщения: 30.12.2006 00:59
Sceval
Попробуй так

Код: xcopy /y /e /c /i /h /r /k /g /z \\com\Pandion "%programfiles%\Pandion\"
Автор: Elroir
Дата сообщения: 30.12.2006 01:25
Nagual

Цитата:
а как написать, чтобы команда "taskkill /f /im" спрашивала какой процесс убить?


Код:
chcp 1251>nul
set /p procname=Введите убиваемый процесс:
taskkill /f /im %procname%
Автор: Nagual
Дата сообщения: 30.12.2006 01:45
Elroir
а можно ли то же самое записать в одну строку? нужно использовать это не в пакетнике а в командной строке
Автор: Elroir
Дата сообщения: 30.12.2006 01:53
Nagual
Можно

Код: chcp 1251 & set /p procname=Введите убиваемый процесс: & echo taskkill /f /im %procname%
Автор: Nagual
Дата сообщения: 30.12.2006 08:48
Elroir
Спасибо за помощь, поясню, зачем это нужно, команду я пускаю в тотальном командире (Total Commander) через панель инструментов, пришлось немного докрутить твой способ, получилось вот что:
В строке команда пишем

Код: cmd
Автор: Elroir
Дата сообщения: 30.12.2006 13:42
Nagual

Цитата:
вот бы еще сюда проверку на правильность написания (существования) убиваемого процесса, и в случае неудачи, повторный запрос на ввод процесса

В одну строчку не получится - нужен переход с помощью goto, а метку в командной строке не поставишь.
Автор: burrito
Дата сообщения: 30.12.2006 13:46
Elroir
спасибо ))

Добавлено:
Elroir
дружище, я понял в чем трабла, если внутри между меткой и goto размещать команды типа rem - всё окей, а вот если внутри идет запуск приложения - то до командды ping не доходит, висит на приложении.

Задача у меня такая:
в ГУМе есть экранируемые пол, на него передается картинка и видео с компьютера на котором запускается прога для проектора.

но у меня 2 ролика, и мне их нужно поочереди запускать ...
т.е. 2 папки с одинаковыми exe файлами но разными видео роликами,
задача запускать по очередности каждый файл с интервалом например 5 минут.

c:\papka1\file.exe
c:\papka2\file.exe

по твоей схеме, к сожалению, у меня не получается, сразу после команды:
"c:\papka1\file.exe" %1
происходит висение, к следующей команде перехода не осуществляется.
Автор: Elroir
Дата сообщения: 30.12.2006 14:11
burrito

Цитата:
но у меня 2 ролика, и мне их нужно поочереди запускать ...

Понятно. Попробуй сделать так:

Код:
:again
start "c:\papka1\file.exe" %1
ping ...
start "c:\papka2\file.exe" %1
ping ...
goto again
Автор: burrito
Дата сообщения: 30.12.2006 14:53
Elroir

получается, но вместо запуска самой программы, запускается новое окно Comand.Com с названием программы в заголовке.


Код: :again
start "C:\Program Files\WinRAR\WinRAR.exe" %1
ping -n 10 127.0.0.1>nul
start "C:\Program Files\WinRAR\WinRAR.exe" %1
ping -n 10 127.0.0.1>nul
goto again
Автор: Elroir
Дата сообщения: 30.12.2006 15:06
burrito

Цитата:
вместо запуска самой программы, запускается новое окно Comand.Com с названием программы в заголовке.

Извини, я забыл, что start интерпретирует строку в кавычках, как заголовок окна.
Надо так:

Код:
:again
start /D"C:\Program Files\WinRAR" WinRAR.exe %1
ping -n 10 127.0.0.1>nul
start /D"C:\Program Files\WinRAR" WinRAR.exe %1
ping -n 10 127.0.0.1>nul
goto again
Автор: burrito
Дата сообщения: 30.12.2006 15:12
Elroir

гениально )))
спасибо большое ) Ыы..
Автор: CrackMe
Дата сообщения: 30.12.2006 16:44
подскажите как прописать маршрутизацию нжного мне сайта (если что то подойдёт и vbs - скрипт, лишь бы раьотало автоматом).
Заранее спасибо.
Автор: denisimo
Дата сообщения: 30.12.2006 19:40
Сделал на работе автоматическое обновление шаблонов отчётов, нарадоватся немогу.
Ранише по полдня уходило, а сейчас вообще этим не занимаюся. Всё сомо посебе как надо происходит!!!
Автор: Nagual
Дата сообщения: 30.12.2006 21:33
Добью батник, раз уж не получилось одной строкой

Код: @echo off

title Убийство процесса
:w
set /p u=Введите убиваемый процесс:
tasklist /fi "imagename eq %u%*"
taskkill /fi "imagename eq %u%*"
echo.
goto w
Автор: Nagual
Дата сообщения: 31.12.2006 04:43
А вот задачку подкину на НГ!
Как определить в переменую имя родительского каталога текущего пути?
То есть находимся мы, например, тут
x:\111\222\333\444
Нужно получить в переменной каталог 333
Пока для решения возникают такие мысли:
записать текущий путь в файл, перейти на уровень выше, записать текущий путь в файл, произвести сравнение строк с выводом разницы и передать значение разницы в переменную.
Может у кого какие более простые есть идеи?
Автор: igor_andreev
Дата сообщения: 31.12.2006 05:57
Nagual
Ну строки сравнивать не надо, а выше перейти придется

Код:
@ECHO OFF
ECHO Current path %CD%
CD ..
ECHO Now we are here %CD%
FOR /F "DELIMS=" %%A IN ("%CD%") DO ECHO The Parent Folder is %%~nA
PAUSE
Автор: ViSiToR
Дата сообщения: 31.12.2006 06:15
Nagual

Цитата:
как определить в переменую имя родительского каталога текущего пути?

Примерно так:


Код:
cd ..
For /f "delims=" %%i in ("%CD%") do set ParentCD=%%~ni
echo %ParentCD%
pause
Автор: Nagual
Дата сообщения: 31.12.2006 06:35
Пасиба, мужики, оба варианта работают
Автор: 01MDM
Дата сообщения: 31.12.2006 09:38
igor_andreev

Цитата:
-Сделать батник, обозвать как угодно, например SD.CMD


Спасибо, сразу не сообразил что можно создать псевдонимы команд навигации. А насчет 4NT вы зря, я 4-вертку прописал в комспек и ненарадуюсь, возможностей на порядок больше чем у cmd, но конечно не PowerShell...



Добавлено:
Вообщем решил задуманное так:

go.cmd[bat;btm]:


Код:
@ECHO OFF

if %1==c goto c
if %1==d goto d

cd %1
title %CD%
goto eof

:c
c:
title %CD%
goto eof


d:
title %CD%
Автор: Smitis
Дата сообщения: 31.12.2006 20:35
burrito

Цитата:
задача запускать по очередности каждый файл с интервалом например 5 минут

Не забивай себе голову всякими ping вместо таймера! (Всё равно ping работает ОЧЕНЬ не точно и вообще может не так сработать). Настрой планировщик для запуска прог и всё.
Автор: Nagual
Дата сообщения: 01.01.2007 00:06
Такая задача имеется, очень давно пытаюсь ее решить, но пока без толку
необходимо запускать комсценарии скрыто, прочитав весь этот топик, ответа так и не нашел, команду cmdow @ /hid не предлагать, окно при этом все равно мигает
есть другая утилита, которая умеет запускать комсценарии скрыто, есть скрипты VBS и JS, делающие то же самое, вопрос как все это связать и можно ли этого вообще достичь?
допускатся размещение утилиты и, если нужно, дополнительного сценария в %path%
если нужно выложу утилиту и примеры сценариев (в идеале использовать имеено их, так как ничего инороного в системе не будет).
Спасибо за внимание.
Автор: Desenix
Дата сообщения: 01.01.2007 00:11
С Новым Годом !!!
Автор: ViSiToR
Дата сообщения: 01.01.2007 03:10
Nagual

Цитата:
необходимо запускать комсценарии скрыто

Вот накалякал на скорую руку утилитку (на AutoIT), к ней прилагается файл конфинурации, в нём задаём путь к батнику и условия выполнения...

RunBat 1.0 174 kb

Файл конфигурации содержит следующее:


Код: [General Prefs]
Bat Path= ;это путь к батнику (поддерживаются переменные)
Flag=Hide ;здесь задаётся флаг - “Скрытый” (Hide), “Полный экран” (Maximize), и “Свёрнуты” (Minimize)
Working Dir=. ;Тут задаётся рабочий каталог (по умолчанию текущий)
Show After=0 ;Здесь устанавливается время (в секундах) через которое нужно показать окно батника (если 0, то окно не покажется)
Error Msg=0 ;Тут устанавливается условие для показа сообщения об ошибке (если не найден бат файл) - параметр 0 устанавливает не показывать сообщение об ошибке, параметр 1 (или любой другой в принципе), устанавливает показ сообщения в случае ошибки (если не удалось запустить батник).

;У каждого параметра в секции чуть ниже, можно указать ключь/и ком. строки с которым/и будет запущен батник (ограничении на количество параметров вроде нет, каждый ключь должен следовать исчислению - CmdLine6=шестой параметр ком. строки).
[CmdLine Params]
CmdLine1=
CmdLine2=
CmdLine3=
CmdLine4=
CmdLine5=
Автор: Nagual
Дата сообщения: 01.01.2007 04:43
ViSiToR
спасибо за отклик
оттестил, но это имхо немного не то, хотя как вариант может кому-то пригодится...
действительно скрывает работу сценария, но только одного, указанного, а нужно немного другое

наверное задачу немного некорректно описал:
необходимо сделать скрытый запуск комсценария, при запуске (открытии) самого сценария, аналогично, как в утилите cmdow
в замену твоей многокилобайной утилите можно пользовать очень невесомый скриптик, приведу его ниже...

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

здесь запуск, к сожалению, идет не самим сценарием, а вспомогательным скриптом, который будет пускать скрыто наш сценарий

итак, скрипт, пускающий сценарий:
run_hide_lite.vbs

Код: CreateObject("WScript.Shell").Run "hide.cmd",0,false

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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