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

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

Автор: bomzzz
Дата сообщения: 26.10.2010 09:17
tasklist фильтр надо подобрать и вырезать память

Добавлено:

Цитата:

for /f %%I in ('tasklist /NH /FI "MEMUSAGE ge 15000"') do (
if %%I==MYPROCESS.EXE taskkill /f /im MYPROCESS.EXE
)

так попробуй

Добавлено:
где 15000 - предел памяти в кб

Добавлено:

Цитата:

@ECHO OFF
COLOR 9F
CLS
:NEXT
for /f %%I in ('tasklist /NH /FI "MEMUSAGE ge 15000"') do (
if %%I==MYPROCESS.EXE taskkill /f /im MYPROCESS.EXE
)
echo %TIME%
ping -n 60 127.0.0.1>nul
goto :NEXT
Автор: fpkx
Дата сообщения: 26.10.2010 10:35

Цитата:
так попробуй

Спасибо большое за быстрый ответ. Батник отрабатывает без ошибок, но процесс почему-то не закрывается. не пойму в чем может быть дело
Автор: bomzzz
Дата сообщения: 26.10.2010 10:42
наверно привелегий не хватает
Автор: BagaBaga
Дата сообщения: 26.10.2010 11:15
Есть текстовый файл, в нем три колонки вида


41.59 105 0.388
-90 300.0 -8.816


Как с помощью sed поменять первую и вторую колонки местами,т.е. получить

105 41.59 0.388
300.0 -90 -8.816


PS
Данные в строке разделены пробелами
Автор: DamiRocK
Дата сообщения: 26.10.2010 11:28
Приветствую сенсеев командной строки...
Прошу помочь с созданием батника, который бы в своём действии выключал и включал определенный драйвер. Это нужно мне, ибо постоянно после гибернации/сна компьютер отключает HDMI выход и звук по нему не передаётся до тех пор, пока я не выключу и включу драйвер вручную...
http://img811.imageshack.us/img811/9701/20101026122653.jpg
Если эту задачу можно упростить с помощью одного bat-файла - было бы просто замечательно. Подскажите, какие данные для драйвера нужно предоставить, чтобы составить такой батник?
Заранее благодарен за содействие
Автор: res2001
Дата сообщения: 26.10.2010 12:01
DamiRocK
Есть утилита у мелкософта devcon, которая позволяет работать с устройствами из командной строки.
У меня на ноуте такая же байда была со звуком, devconом вылечил.
Автор: Romanchikprivet
Дата сообщения: 26.10.2010 12:06
Уважаемый, wolf0425!
Вы мне подсказывали код
@echo off
chcp 1251
1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt && exit
1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%

а если мне надо просто определенную строку заменить на строку с датой, это можно сделать?
т.е найти строку содержащую например слово Тогда и заменить его тогда 26.10.2010 (системную дату)

Подскажите, пожалуйста

Добавлено:
или кто сможет
Автор: wolf0425
Дата сообщения: 26.10.2010 12:16
BagaBaga, а что там считать колонками? в смысле - пробелы в начале строк - так и задуманы?
наверно как-то так:
sed -r -i "s;^( *[^ ]*)( *)([^ ]*);\3\2\1;gi" file1.txt


Добавлено:
Romanchikprivet
Цитата:
а если мне надо просто определенную строку заменить на строку с датой, это можно сделать?
можно, вопрос в деталях - например можно ли использовать дополнительные программы или нужно обходиться тем, что есть в системе.
с помощью sed.exe замена делается тривиально:


Код: @echo off
chcp 1251
1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt || 1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
sed -r -i "s;^(ДАТА ФОРМИРОВАНИЯ ФАЙЛА:)(.*)$;\1 %date%;gi" file.txt
Автор: Romanchikprivet
Дата сообщения: 26.10.2010 12:30
а что такое sed.exe?


без него нельзя обойтись тем что имеется в системе?
Автор: bomzzz
Дата сообщения: 26.10.2010 12:39
прога левая. обычно его применяют когда нельзя
Автор: Romanchikprivet
Дата сообщения: 26.10.2010 12:45
bomzzz, подскажи где ее скачать
Автор: wolf0425
Дата сообщения: 26.10.2010 13:04

Цитата:
без него нельзя обойтись тем что имеется в системе?
можно, наверно, но писать потребуется сильно больше и ограничения по содержимому файла моментально появятся.

скачать - сверху ссылка в "Полезные утилиты": (даже две - в UnxUtils он тоже входит)
Ну или яндекс в помощь.

Автор: Romanchikprivet
Дата сообщения: 26.10.2010 13:05
wolf0425, скачал не работает почему-то...
Автор: wolf0425
Дата сообщения: 26.10.2010 13:09

Цитата:
скачал не работает почему-то...
если качал с "официального" сайта - то наверняка библиотеки забыл.
в UnxUtils - версия, работающая без левых библиотек, но старая.
Автор: BagaBaga
Дата сообщения: 26.10.2010 13:19

Цитата:
BagaBaga, а что там считать колонками?


Есть первая колонка - содержит цифры и (возможно) несколько пробелов перед ними. Цифры могут быть целые или с плавающей точкой. Пробелы впереди определяются форматом (вывода софтины), фактически, для удобства - чтобы визуально выровнять разряды.
Вторая и третья колонки - аналогично.

PS
приведенный код не выдает ни чего. В выоде - пусто.
Автор: Romanchikprivet
Дата сообщения: 26.10.2010 13:23
Говорит неправильный параметр i
Автор: bomzzz
Дата сообщения: 26.10.2010 13:32
в шапке темы пасматри или у гуглы попроси, распространенная прога
Автор: wolf0425
Дата сообщения: 26.10.2010 13:41

Цитата:
приведенный код не выдает ни чего. В выоде - пусто.
приведенный код сразу патчит файл, если нужен вывод то
sed -r "s;^( *[^ ]*)( *)([^ ]*);\3\2\1;gi" <file1.txt


Добавлено:
Romanchikprivetкак я понял, ты старый sed скачал, где такого ключика -i ещё не было, а на UnxUpdates.zip, где sed поновее - там кажись ссылка уже мертвая :(
так что или обновляй sed - UnxUpdates я выложил на http://zalil.ru/29871119

или подправь батник:

Код:
@echo off
chcp 1251
1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt || 1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
sed -r "s;^(ДАТА ФОРМИРОВАНИЯ ФАЙЛА:).*$;\1 %date%;gi" <file.txt >file2.txt && move /y file2.txt file.txt
Автор: Romanchikprivet
Дата сообщения: 26.10.2010 13:56
С параметром i не работает
Удалил временно параметр i вот такие результаты
Если в файле нет фразы он добавляет без проблем.
Если есть фраза ничего не происходит


Добавлено:
Все равно не работает....
Пишет sed: -e expression #1, char 49: Invalid reular expression
Автор: wolf0425
Дата сообщения: 26.10.2010 16:39

Цитата:
Пишет sed: -e expression #1, char 49: Invalid reular expression
смайлик влез при копировании, поправил
Автор: Romanchikprivet
Дата сообщения: 27.10.2010 07:57
wolf0425, снова пристаю с вопросом. Батник заработал, но он все строчки превращает в одну и все пробелы заменяет квадратиком, что это может быть?
Автор: Saymer
Дата сообщения: 27.10.2010 12:05
Возник вопрос, искал, но конкретно не не нашел, и решил спросить тут.

Нужен батник, при запуске которого искались бы определенные файлы (по имени) и папки на всех дисках, в т.ч. на скрытых и удалялись. Без запроса на удаление.
Т.е. расположение файлов не известно, ни буква диска, ни папка. Известно только название.
Ну примерно такие папки "Мегафон отчет", "Detalizacia", "Nachislenia_abonentov".

Вот собственно, а как должен выглядить этот батник?

Пробовал в cmd написать del /F /S /A:*111*.* (111 создал файл проверить) ругается на имя после A:

Прошу помощи в создании этого батника.
Автор: bomzzz
Дата сообщения: 27.10.2010 12:18
через FOR это надо делать.

Добавлено:
ECHO OFF
COLOR 9F
CLS
PUSHD C:\
FOR /R %%I IN (.) DO (
IF EXIST "%%I\MYFILE.TXT" ECHO %%I
)
pause

этот батник ищет на диске С файл MYFILE.TXT и найдя выбает в какой он папки. ну и так далее
Автор: wolf0425
Дата сообщения: 27.10.2010 12:41

Цитата:
Батник заработал, но он все строчки превращает в одну и все пробелы заменяет квадратиком, что это может быть?
sed то у тебя какой версии, в итоге?
почему "превращает в одну" - я наверно понял, это у тебя редактор не понимает юниксовых переводов строк, а sed - v 4.0.7. ниже вариант, это лечащий.
а про пробелы - как-то и идей нет. напиши строку, которую у тебя батник портит (и версию sed) - хоть посмотрю.


Код: @echo off
chcp 1251
1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt || 1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
sed -r "s;^(ДАТА ФОРМИРОВАНИЯ ФАЙЛА:).*$;\1 %date%;gi" <file.txt |more >file2.txt && move /y file2.txt file.txt
Автор: 01MDM
Дата сообщения: 27.10.2010 12:52
Saymer
Я бы не рекомендовал удалять файлы по маске, да еще рекурсивно. А вообще:

Код:
del /s /f /a \*1111*
Автор: Saymer
Дата сообщения: 27.10.2010 13:29
По поводу FOR честно говоря не понял, поступил следующим образом.
Создал 1.cmd с содержанием:
del /F /S /A: *12345678*.*

т.е. он у меня удаляет все файлы, ну например созданый 123456789.txt

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

При указании например
c:\del /F /S /A: *12345678*.*
d:\del /F /S /A: *12345678*.*
e:\del /F /S /A: *12345678*.*

Вылетает сразу. Как сделать, что бы поиск был по всем дискам, а не на диске запуска?
Автор: 01MDM
Дата сообщения: 27.10.2010 13:39
Saymer

Код:
@echo off

for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do if exist %%i:\ del /s /a /f %%i:\*12345678*.*
Автор: Saymer
Дата сообщения: 27.10.2010 14:02
01MDM, спасибо, действительно работает.
В скобках как понимаю указаны буквы дисков, которые нужно перебрать последовательно для поиска так?

Если нужно удалить несколько файлов, с разными именами, несколько строк где в конце имя искомого файла верно?

Тут ещё возник вопрос, не верно интерпретируются кирилистические символы названий файлов.

Например нужно удалить файл удалименя.txt
пишу

Код:
@echo off

for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do if exist %%i:\ del /s /a /f %%i:\*удалименя*
Автор: Romanchikprivet
Дата сообщения: 27.10.2010 15:06
wolf0425, все заработало с файлами типа txt, теперь пытаюсь переделать bat файл под xsl файл там строка типа "    <p class="foot">Дата.</p>" вот после Дата надо вставить дату не работает причем строки вообще не находит. В чем может быть проблема?

Добавлено:
причем вот это где пусто это пробелы...

Добавлено:
Может можно как то по номеру строки и позиции сделать?!....
Автор: wolf0425
Дата сообщения: 27.10.2010 17:45
наверно так:

Код: sed -r "s;(<p class=\x22foot\x22>)Дата.*(</p>);\1Дата %date%\2;gi" <file.txt |more >file2.txt && move /y file2.txt file.txt

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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