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

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

Автор: exMIB
Дата сообщения: 15.08.2003 12:43
AntonRNB
Посмотри хорошую маленькую программу без оболочки Sender http://home.comset.net/panoff/soft , которая позволяет из командной строки посылать email.

tumber
Я нашел способ. Программку маленькую Silence Start, которая может скрыть запуск любого файла http://zfs.lg.ua/serg_gm/rus/sstart_readme.htm .

Silence Start - analogue of standard program/command 'start', but can run program in minimized window without lost current focus, in always on top and hide window (also in C-A-D-list in Win95/98)

Только глюк у неё в XP есть (на других ОС не проверял). Если во время её работы юзер начинает перезагружать комп или выключать нормально, не по кнопке на корпусе, то она иногда выдает ошибку, что некорректно завершила работу. Про это и сам автор пишет.
В остальном вроде хорошая.

А start /m где писать? Это я понимаю в батнике пишется для запуска другой программы. А мне надо скрыто запустить батник из планировщика.

Добавлено
Что в этом батнике с выдеранием до сотых долей секунды неправильно:

Код: @echo off
for /f "tokens=1,2,3 delims=." %%i in ("%DATE%") do for /f "tokens=1,2 delims=:" %%l in ("%TIME%") do for /f "tokens=3,4 delims=," %%n in ("%TIME%") do copy /y "C:\path\*.tmp" "C:\tmp\%%i-%%j-%%k_%%l-%%m-%%n-%%o.tmp" >> "C:\tmp\stat.log"
Автор: tumber
Дата сообщения: 15.08.2003 16:04
exMIB
Вот это делает то, что нужно:

@echo off
dir /b "c:\path" > dir.txt
for /f "tokens=1,2 delims= " %%g in ("%DATE%") do for /f "tokens=1,2,3 delims=." %%i in ("%%h") do for /f "tokens=1,2,3 delims=:" %%l in ("%TIME%") do for /f "tokens=1,2 delims=," %%o in ("%%n") do for /f "tokens=1,2 delims=." %%q in (dir.txt) do copy "C:\path\%%q.%%r" "C:\tmp\%%q_%%k-%%j-%%i_%%l-%%m-%%o-%%p.%%r" > nul
del dir.txt

При желании dir.txt можно не удалять, а добавить в лог.

Добавлено

Цитата:
А start /m где писать? Это я понимаю в батнике пишется для запуска другой программы. А мне надо скрыто запустить батник из планировщика.

В свойствах задания. У меня в W2000 так:
Выполнить: C:\WINNT\Command\Start.exe /m D:\path2bat\rezerv.bat
Правда, это не помогло, окно все равно мелькает.
Автор: exMIB
Дата сообщения: 15.08.2003 20:14
tumber
У меня в XP нет файла Start.exe совсем нигде.
Какие ещё варианты для скрытия батника, кроме моего про который я выше написал?
Или он единственный?
А вот файлы *.vbs как запускаются? Скрытно или заметно?
Автор: exMIB
Дата сообщения: 17.08.2003 01:30
tumber
Спасибо за идею. Теперь работает, только я немного исправил. В твоем коде ошибка с датой была.

Теперь осталось узнать: как средствами ОС скрыть запуск батника
Или может у кого есть аналог Silence Start, про который я вверху писал, чтобы без глюков.

И ещё про одну проблему - это выключение компа с XP через батник и планировщик.
Команду shutdown и её параметры я знаю.
Но вот как быть если планировщик не хочет этот батник запускать, пока не был сделан вход пользователя в систему, т.е. до окна Приветствия, когда планировщик работает в режиме сервиса.
Вроде бы он может работать как служба.
Автор: tumber
Дата сообщения: 18.08.2003 11:02
exMIB

Цитата:
как средствами ОС скрыть запуск батника

Вот это частично решает проблему:

1. В папке, где находится батник, создается ярлык для него.
2. В свойствах ярлыка указывается
Окно: Свернутое в значок.
3. В планировщике в свойствах задания пишется примерно так:
Выполнить: D:\path2bat\Ярлык_rezerv.bat.lnk

В результате мелькание только в панели задач, а на рабочем столе мелькания нет.
По остальным вопросам - не знаю.
Автор: AntonRNB
Дата сообщения: 18.08.2003 12:20
exMIB
Спасибо!
Это то, что нужно!
Автор: exMIB
Дата сообщения: 18.08.2003 12:57
tumber
А теперь понятно, я так делал, но в планировщике указывал расширение D:\path2bat\Ярлык_rezerv.lnk, из-за этого и не работало.

Но для полного скрытия значит пока остается только Silence Start
Автор: ironwit
Дата сообщения: 18.09.2003 08:19
такой вопрос.

Как средствами комстроки и архиватора просмотреть каталог с подкаталогами и все файлы с расширением txt заархивировать в файл с именем равным имени txt файла и расширением равным архиву(то есть zip,rar...).

После этого удалить txt файлы.

Заранее спасибо.

P.S. да еще если бы консольную программу проверки кодировки txt файла и если он не win то автоматом перекодировать...
Автор: MetroidZ
Дата сообщения: 18.09.2003 09:09

Цитата:
Как средствами комстроки и архиватора просмотреть каталог с подкаталогами и все файлы с расширением txt заархивировать в файл с именем равным имени txt файла и расширением равным архиву(то есть zip,rar...).
 
После этого удалить  txt файлы.

если есть Winrar то там есть реадми из которого ты узнаешь, как это сделать.


Цитата:
как средствами ОС скрыть запуск батника

в батнике прямо пишется какая то строка (забыл, поищу если никто не найдёт).
Автор: ironwit
Дата сообщения: 18.09.2003 09:31
MetroidZ

Цитата:
если есть Winrar то там есть реадми из которого ты узнаешь, как это сделать.

громадное тебе спасибо, прям не знаю чтобы без тебя делал.

1. Winrar у меня нет, использую только 7zip или pkzip
2. Даже если бы и был и я его прочитал, то все равно это не то. Я уже когда то так пробовал. Он может это делать только по одному каталогу зараз. а мне нужно ОЧЕНЬ большое кол-во прогнать.

Поэтому вопрос остается в силе.
Автор: vserd
Дата сообщения: 18.09.2003 10:13
ironwit
К Winzip нужно качать приблуду, которая даст консольный интерфейс.


Цитата:
Даже если бы и был и я его прочитал, то все равно это не то. Я уже когда то так пробовал. Он может это делать только по одному каталогу зараз. а мне нужно ОЧЕНЬ большое кол-во прогнать.

Внимательно читал?
RAR -?
rar <command> -<switch 1> -<switch N> <archive> <files...> <@listfiles...>

на <@listfiles...> команду обращал внимание?
на r Recurse subdirectories
r0 Recurse subdirectories for wildcard names only
df Delete files after archiving
переключатели тоже?

Автор: ironwit
Дата сообщения: 18.09.2003 13:29
vserd
осознал, каюсь. Читаю...

P.S. но задача универсально (не зависимо от архиватора) все равно не решена

Добавлено
да, но

как указать rar чтобы он архивировал один файл в один архив?
Автор: tumber
Дата сообщения: 18.09.2003 15:59
ironwit
Прием стандартный, он в этом топике уже использовался. Пишем список файлов в dir.txt, а потом оттуда читаем и обрабатываем по отдельности каждый файл. Например, вот так:

dir D:\WORK\*.txt /B /S > dir.txt
for /f "tokens=1,2 delims=." %%a in (dir.txt) do C:\PROGRA~1\WINRAR\rar.exe a -ep "%%a" "%%a.%%b"
for /f "tokens=1,2 delims=." %%a in (dir.txt) do del "%%a.%%b"
del dir.txt

Этот пример работает, если в полном имени архивируемого файла, вместе с путем к нему, есть одна, и только одна точка - перед расширением.
Автор: ironwit
Дата сообщения: 19.09.2003 07:20
tumber
а если есть?
Автор: vserd
Дата сообщения: 19.09.2003 10:17
ironwit
Ну тогда воспользуйся такой командой
dir *.txt /B /S > dir.tx1
for /f %%a in (dir.tx1) do Вызов архиватора
:)))
Это построено в предположении что в dir.txt находятся файлы с расширением тхт

Цитата:
P.S. но задача универсально (не зависимо от архиватора) все равно не решена

Я сомневаюсь что ее можно решить универсально.
Хотя батник запросто можно написать универсально, чтобы изменения свести к миниму.
Автор: tumber
Дата сообщения: 19.09.2003 12:02
ironwit

Цитата:
а если есть?

Если есть еще точки - то мне придумать не удается.
Автор: ironwit
Дата сообщения: 19.09.2003 12:08
vserd
Блин, теперь она выдает полные имена файлов. Вместе с расширением. И соответственно rar выдает что не может создать архив.
Автор: tumber
Дата сообщения: 19.09.2003 13:15
ironwit
Расширение в варианте vserd обрезать можно:

dir D:\WORK\*.txt /B /S > dir.txt
for /f %%A in (dir.txt) do C:\PROGRA~1\WINRAR\rar.exe a -ep "%%~dpnA" "%%A"

Тут проблема с возможными пробелами в именах файлов/папок. Переменная A обрезается на первом пробеле, и побороть это у меня не получается.
Автор: vserd
Дата сообщения: 19.09.2003 13:55
ironwit
Если тебя устроит вариант имен файлов вида MyFile.txt.rar тогда напиши C:\PROGRA~1\WINRAR\rar.exe a -ep "%%A.rar" "%%A"
или .zip если хочешь создавать zip-файлы

Если нет, читай дальше :))

tumber

Цитата:
Тут проблема с возможными пробелами в именах файлов/папок. Переменная A обрезается на первом пробеле, и побороть это у меня не получается.


Обрати внимание на delims, если его задать таким, что он является недопустимым в полных именах файлов (например *), то будут выделяться полные строки вместе с пробелами:

for /f "delims=*" %%A in (dir.txt) do echo "%%~dpnA.rar"

У команды for, на удивление, хорошая подсказка :))
Автор: tumber
Дата сообщения: 19.09.2003 14:19
vserd

Цитата:
У команды for, на удивление, хорошая подсказка )

Согласен, сам внимательно ее изучал.

Цитата:
Обрати внимание на delims, если его задать таким, что он является недопустимым в полных именах файлов (например *), то будут выделяться полные строки вместе с пробелами:

А вот до этого я не додумался, тупой
Просто, как все гениальное
Автор: ironwit
Дата сообщения: 19.09.2003 15:07
решение проблемы

@echo off
del dir1.txt
for /f %%1 in (c:\arc\dir.txt) do expand %%1 >>dir1.txt
for /f %%1 in (c:\arc\dir1.txt) do rar a -ep %%1 %%1.txt
for /f %%1 in (c:\arc\dir1.txt) do del %%1.txt


P.S.
извините за НеРоВныЙ ПоЧеРК
пьян.


expand моя программа - выдает имя файла из пути.
Автор: vserd
Дата сообщения: 19.09.2003 16:17
Есть предложение сократить это
for /f %%1 in (c:\arc\dir.txt) do expand %%1 >>dir1.txt
for /f %%1 in (c:\arc\dir1.txt) do rar a -ep %%1 %%1.txt
for /f %%1 in (c:\arc\dir1.txt) do del %%1.txt

до такого
for /f "delims=*" %%1 in (dir.txt) do rar a -ep -df %%~n1 %%~n1.txt

Автор: exMIB
Дата сообщения: 24.09.2003 11:14
Кто знает как в батнике делать поиск по запущенным процессам в виндовс?

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

Как обнаруживать запущенные процессы в памяти через батник?
Автор: WildCat
Дата сообщения: 24.09.2003 11:32
exMIB
Никак. Из батника ты процессы не увидишь. Для того что тебе надо, рекомендую nnCron -- в нем это делается элементарно.
Автор: ironwit
Дата сообщения: 25.09.2003 12:25
exMIB
поищи pstools, там есть программа pslist.exe
Автор: max67
Дата сообщения: 25.09.2003 16:58

Цитата:
Никак. Из батника ты процессы не увидишь

В WinXP есть родной консольный tasklist.
Автор: ironwit
Дата сообщения: 29.09.2003 08:41
может ли кто посоветовать консольную программу для отправки почты. С поддержкой вложений. Заранее спасибо.
Автор: counter
Дата сообщения: 29.09.2003 09:03
ironwit
попробуй POSTIE, надеюсь, ты не спам будешь рассылать с вложениями
Автор: ironwit
Дата сообщения: 29.09.2003 09:07
counter
нет - конечно. Нужно организовать рассылку своих лог файлов по своим же адресам (внутри корпоратичной сети)

Спасибо.
Автор: counter
Дата сообщения: 29.09.2003 09:16
если не обязательно консольная прога нужна, а просто пакетная, то подойдет и TheBat, с ним легче разобраться

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

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


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