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

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

Автор: ailman85
Дата сообщения: 24.07.2008 14:13
Огромнейшее спасибо всем!!!
Автор: ssnvit
Дата сообщения: 24.07.2008 14:28
1) Каким образом можно выяснить имеется ли запущенный процесс в системе, например winword.exe под пользователем user?
Консольная утилита tasklist работает, но когда применяешь фильтрацию типа /fi "username eq user" пишет ошибка: фильтр поиска не опознан. И вообще эта утилита tasklist была бы хороша, но ее фильтры у меня не работают практически на всех машинах в сети.
2) Если данный процесс существует, тогда ликвидировать его путем taskkill
Автор: Elroir
Дата сообщения: 24.07.2008 14:36
ailman85

Цитата:
он мне выдает 389, т.е. последние 3 цифры.

Извини - ошибся. Имелось в виду, конечно же, то что написал yurkesha
Автор: ailman85
Дата сообщения: 24.07.2008 15:00
Все равно спасибо! Лишний раз не помешает
Автор: Elroir
Дата сообщения: 24.07.2008 15:49
ssnvit
Можно попробовать так:

Код:
tasklist /v | find /i "winword.exe" | find "user">nul
if not errorlevel 1 taskkill /F /FI "USERNAME eq user" /IM winword.exe
Автор: ssnvit
Дата сообщения: 25.07.2008 10:53
Elroir
[q][/q]

Спасибо - все работает.
Заодно разобрался почему глючил tasklist у меня в сети - причина в MUI, удалил из MUI tasklist и все стало как надо. На чистых английских машинах все О.к. а на руссифицированных через MUI надо удалять taskkist.mui.exe. Либо если не удалять, то например вместо user писать пользователь и т.п.
Автор: lamener
Дата сообщения: 25.07.2008 12:31
Подскажите пожалуйста !!
как узнать пустая ли папка ?
если нет то выполнять набор действий...
Заранее благодарен !
Автор: Elroir
Дата сообщения: 25.07.2008 13:08
lamener
Пуста - это значит нет файлов или нет файлов и поддиректорий?
Автор: lamener
Дата сообщения: 25.07.2008 13:19

Цитата:
Пуста - это значит нет файлов или нет файлов и поддиректорий?

нет поддиректорий
Автор: Elroir
Дата сообщения: 25.07.2008 13:27
lamener

Код:
@echo off
setlocal
set "folder=c:\temp"
for /f "tokens=*" %%a in ('dir /ad /b "%folder%"') do (set "found=true" & goto next)
:next
if defined found (
:: Здесь набор действий, которые надо
:: выполнить
)
Автор: lamener
Дата сообщения: 25.07.2008 13:37
Elroir Спасибо !!


Код: @echo off
cd /d "E:\1"
if not errorlevel 1 (
for /D %%e in (*) do (
move "%%e" "E:\2"
echo %%~nxe > "E:\2\%%~nxe\9.txt"
)
)
Автор: Elroir
Дата сообщения: 25.07.2008 13:55
lamener
Вместо строчки с "echo %%~nxe > "E:\2\%%~nxe\9.txt"", используй такую:

Код:
set /p=%%~nxe<nul>"E:\2\%%~nxe\9.txt"
Автор: lamener
Дата сообщения: 25.07.2008 14:25
Elroir
Спасибо !! Спасибо ! И еще раз спасибо !!

Существует каталог с кучей подкаталогов с файлами имена всегда разные.
Переместить все подкаталоги с файлами из указанного каталога в назначенный каталог, и в каждом из перемещенных подкаталогов создать текстовый документ (имя документа 9.txt), содержание документа - "имя подкаталога"


Код: @echo off
cd /d "E:\1"
if not errorlevel 1 (
for /D %%e in (*) do (
move "%%e" "E:\2"
set /p=%%~nxe<nul>"E:\2\%%~nxe\9.txt"
)
)
Автор: Elroir
Дата сообщения: 25.07.2008 14:55
lamener

Цитата:
Если такое имя существует по переименовать подкаталог с именем - "имя-1"

Не понял. Если в name.txt уже существует каталог с таким именем, то переименовать во что?
Автор: lamener
Дата сообщения: 25.07.2008 15:01
Elroir
Если такое имя существует по переименовать подкаталог с именем - "имя-1"
Не понял. Если в name.txt уже существует каталог с таким именем, то переименовать во что?


Цитата:
например : "folder" существует переименовать в "folder-1"


прошу прощения за непонятную постановку вопроса
Автор: Elroir
Дата сообщения: 25.07.2008 15:19
lamener

Цитата:
например : "folder" существует переименовать в "folder-1"

Здесь может быть проблема - если и "folder-1" тоже уже существует, что делать?
На самом деле проблема шире - любое другое имя может уже существовать ("folder-1", "folder-2", "folder-3" и т.д). Нужно либо какое-то правило, либо допущение, что имени с суффиксом "-1" не существует.
Автор: lamener
Дата сообщения: 25.07.2008 15:26
Elroir
Здесь может быть проблема - если и "folder-1" тоже уже существует, что делать?

Цитата:
ну можно сделать так "folder-1-1"
Автор: stydik
Дата сообщения: 26.07.2008 01:56
Доброго времени суток. Немножко тупой вопрос: имеется досовская программа. При запуске главного файла (расширение ехе), пишет что не загружен файл с раширением СОМ. Можно конечно создать батник (типа сначала СОМ потом ЕХЕ). Но сам вопрос: возможно ли СОМ вшить в ЕХЕ -шник ???? Я так делал с dll и exe......
Автор: DzOOMer
Дата сообщения: 26.07.2008 23:01
есть код:

date /t >>log.txt
time /t >>log.txt

в итоге дата и время разделяются переносом.
как сделать, чтобы в log.txt дата и время отображались на одной строке?
Автор: yurkesha
Дата сообщения: 26.07.2008 23:20
echo %DATE% %TIME%>log.txt
Автор: Nagual
Дата сообщения: 26.07.2008 23:51
DzOOMer
echo %date% %time:~,-3%>log.txt
Автор: DzOOMer
Дата сообщения: 27.07.2008 00:39
а тогда такой код:

echo Exit QIP: >>log.txt
taskkill /im qip.exe >>log.txt

выдает:

Exit QIP:
Успешно: Процесс "qip.exe", с идентификатором 2849, был завершен.

как сделать чтобы выводился на одной строке?
Автор: Nagual
Дата сообщения: 27.07.2008 02:22
DzOOMer
for /f "delims=" %%a in ('taskkill /im qip.exe') do set t=%%a
echo Exit QIP: %t%>>log.txt

Добавлено:
одной строкой
for /f "delims=" %%a in ('taskkill /im qip.exe') do echo Exit QIP: %%a>>log.txt
Автор: DzOOMer
Дата сообщения: 27.07.2008 10:27
Nagual
спасибо.

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

rasdial "modem DSL connect" /disconnect >>log.txt

в случае если на момент выполнения команды соединение отсутствует выдает две строки:

Отсутствуют подключения
Команда успешно завершена.

возможно ли указать, чтобы эти сообщения следовали в одной строке?
Автор: 01MDM
Дата сообщения: 27.07.2008 10:55
DzOOMer

Цитата:
возможно ли указать, чтобы эти сообщения следовали в одной строке?

Например так

Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('rasdial "modem DSL connect" /disconnect') do (
    set mess=!mess! %%i
)
echo %mess% 1>log.txt
Автор: DzOOMer
Дата сообщения: 27.07.2008 10:57
сделал так:

for /f "delims=" %%a in ('rasdial "modem DSL connect" /disconnect') do echo Drop DSL: %%a>>log.txt

но вылазит в двух строках:

Drop DSL: Отсутствуют подключения
Drop DSL: Команда успешно завершена.


Добавлено:
01MDM

да, так подойдет. спасибо.

и последнее (надеюс). в логе все пишется в DOS кодеровке.
хотел перевести в win для этого делаю так:

chcp 1251 >nul

код

chcp 866 >nul

но в лог всеравно все пишется в DOS'e. как победить?
Автор: 01MDM
Дата сообщения: 27.07.2008 11:07
DzOOMer
Сделай лучше так

Код:
@echo off

for /f "tokens=*" %%i in ('rasdial "modem DSL connect" /disconnect') do (
    call:mess "%%i"
)
echo.>>log.txt
goto:eof

:mess
chcp 1251 1>nul
set /p="%~1 "<nul 1>>log.txt
chcp 866 1>nul
Автор: Elroir
Дата сообщения: 27.07.2008 11:12
lamener

Цитата:
move "%%e" "E:\2"

Этот код у тебя работает? Переносятся каталоги?
Автор: lamener
Дата сообщения: 28.07.2008 09:12
Elroir

Цитата:
move "%%e" "E:\2"
Этот код у тебя работает? Переносятся каталоги?

Да нормально работает !! Но только соответственно в паре с for

Код: for /D %%e in (*) do (
move "%%e" "E:\2"
)
Автор: MsdLamer
Дата сообщения: 28.07.2008 10:54
Здравствуйте. Есть задачка по копировнию файлов по дате создания. К примеру для копировния файлов по сегодняшней дате я использовал...

set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
xcopy /d:%m%-%d%-%y% \\Post1\c$\CASH\TXT\*.txt C:\Statistic\

А как можно сделать чтобы при запуске бат файла можно было вписывать дату (например: ВПИШИТЕ ДАТУ: 14.05.08) и он бы копировал файлы даты которую я написал, а сели просто нажимаешь Enter тогда копировались бы файлы текущей даты. Спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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