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

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

Автор: InSe0F
Дата сообщения: 13.04.2007 23:00
NIKZZZZ
хм, а что если запустить через hiderun то он нефига не спросить?, т.е. автоматом ответит НЕТ

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

Добавлено:
NIKZZZZ
а да taskkil, глянул вроде как надо вот так: taskkil /im hlds.bat
только вот батник так выключаться не хочет, кричит что не удаётся найти процесс
Автор: Elroir
Дата сообщения: 13.04.2007 23:46
InSe0F
Насчет hiderun не знаю, но вот тебе ссылочка на hstart
http://www.ntwind.com/software/utilities/hstart.html
Автор: NIKZZZZ
Дата сообщения: 14.04.2007 00:07
InSe0F

Цитата:
можно ссылочку на hiderun

Например, здесь.


Цитата:
только вот батник так выключаться не хочет, кричит что не удаётся найти процесс

Об этом я как-то не подумал - процес-то называется "cmd.exe" , а не hlds.bat.
Возможное решение - сделать копию cmd.exe - cmd2.exe


Код: Батник запуска:
copy c:\windows\system32\cmd.exe "%temp%\cmd2.exe"
[hiderun] "%Temp%\cmd2.exe" /c hlds.bat
Автор: Tipulatoid
Дата сообщения: 14.04.2007 03:40
mitrichbel

Цитата:
1. выгружаю из памяти миранду и ещё пару программ.
2. по очереди упаковываю в архивы на флешке папки с этими программами
3. упаковываю в архивы на флешке папки с другой информацией
4. на второй машине сначала проверяю, не запущены ли программы, которые я собираюсь распаковать с флешки
5. если запущены - завершаю, естественно
6. очищаю содержимое папок, которые будут заполнены в следующем шаге (понимаю, что перед этим неплохо бы протестировать архивы на флешке)
7. распаковываю каждый архив в предназначенное ему место
8. запускаю эти обновленные программы


Примерно так. Создайте на флешке в папке где будет лежать батник файл synhronize.txt примерно следующего содержания:


Код: 1;c:\ddd\ggg;d:\aaa\jjj;lalalya.exe
2;c:\eee\hhh;e:\bbb\kkk;topolya.exe
3;c:\fff\iii;d:\ccc\lll
Автор: InSe0F
Дата сообщения: 14.04.2007 06:45
NIKZZZZ, не не прошло
hiderun ваще откзывался запускаться, что-то ошибку писал, запустил через hstart

Код:
copy c:\windows\system32\cmd.exe "%temp%\cmd2.exe"
hstart /NOWINDOW /IDLE "%Temp%\cmd2.exe /c "cs_load.bat" > C:\hstart.log
Автор: Maza Faka
Дата сообщения: 14.04.2007 09:38
InSe0F

Цитата:
как сделать чтобы у меня hlds.exe запускался с приоритетом для системы "ВЫСОКИЙ"


Код:
Start /HIGH hlds.exe
Автор: InSe0F
Дата сообщения: 14.04.2007 12:27
Maza Faka
просто у мня стоит вот так

Код: C:
cd "C:\ПУТЬ к файлу"
/HIGH "hlds.exe"
Автор: Maza Faka
Дата сообщения: 14.04.2007 13:58
InSe0F
А, что мешает запустить так:

Код:
Start /HIGH "" "C:\Путь к файлу\file.exe"
Автор: testir
Дата сообщения: 14.04.2007 14:49
Elroir

Цитата:
@echo off
setlocal enabledelayedexpansion
set "folder=fujic"
set "delfold=11.04.2007"
for /R d:\temp\ %%i in (.) do (
set "skip=no"
call :checkname "%%i"
if "!skip!"=="no" (
if "%%~nxi"=="%delfold%" (rd /s /q "%%i")
)
)
goto :EOF
:checkname
for /f "tokens=1* delims=\" %%a in (%1) do (
if "%%a"=="" goto :EOF
if /i "%%a"=="%folder%" (
set "skip=yes"
goto :EOF
) else (
if not "%%b"=="" call :checkname "%%b"
)
)


вот это то что нужно!!! )

Maza Faka

Цитата:
Прав - я не учел, что в "11.04.2007" может быть фолдер "fujic"

в принципе такого исключения не происходит, так что на это можно не проверять, но для спортивного интереса было бы не плохо его реализовать )

igor_andreev

Цитата:
А я б задачу камрада testir решал вообще без всяких IF, CD, XCOPY...

как вариант ) но хотелось бы без создания доп. файлов и без копирования файлов из одного места в другое, файлы большие ~ 80Гб но интересно посмотреть и на этот вариант решения! )

Elroir

Цитата:
Приведи структуру папок, которая может быть, какие папки надо удалять, а какие нет.


структура следующая:
D:\temp\serv1\folder1\11.04.27 - очистить
D:\temp\serv1\folder2\11.04.27 - очистить
D:\temp\serv1\.....\11.04.27 - очистить
D:\temp\serv2\......\11.04.27 - очистить
D:\temp\fujik\........\11.04.27 - пропустить
Спасибо всем кто принимал участие!!! )
Автор: InSe0F
Дата сообщения: 14.04.2007 15:25
Maza Faka, неудобно если будем менять путь надо его править во всём файле

такой вопрос: а можно как нить запуск файла на переменную на запуск файла?
чо нить типа:
file = Start /HIGH "" "C:\ПУТЬ\hlds.exe"
Автор: NIKZZZZ
Дата сообщения: 14.04.2007 15:35
InSe0F

Цитата:
так понимаю надо ещё добавить чтобы он всегда отвечал N. тока как чёт не соображу...
в остальном ничего не менял.

Ответить на вопрос, можно например из файла
hlds.exe < no.txt (текстовой файл со словом No)
или перенаправив вывод Команды Echo No
Echo No| hlds.exe

будут ли работать эти команды с hlds.exe, сказать сложно.
Но taskkill /f должна убивать процесс независимо от ответа.
По поводу приоритета-

Цитата:
C:
cd "C:\ПУТЬ к файлу"
start /HIGH "hlds.exe"


Без Start это бесполезно.
Поробуй использовать вместо этого hstart с соответствующим ключом.



Цитата:
чо нить типа:
file = Start /HIGH "" "C:\ПУТЬ\hlds.exe"


set MeProga=C:\ПУТЬ\hlds.exe
Start /HIGH "" "%MeProga%"

или
Set MePath=C:\ПУТЬ
Start /HIGH "" "%MePath%\hlds.exe"

или
Set MeProga = Start /HIGH "" "C:\ПУТЬ\hlds.exe"
%MeProga%
Автор: InSe0F
Дата сообщения: 14.04.2007 16:15
NIKZZZZ

Цитата:
будут ли работать эти команды с hlds.exe, сказать сложно.

так причём тут она? вопрос ведь скрипт задаёт...

Добавлено:
так с вопросом разобрался, почему то больше не появляется
хз чо было, может потому что переменную теперь вписал на запуск.

NIKZZZZ, правда написал немного по другому....

Код: echo wscript.sleep wscript.arguments(0)>%Temp%/sleep.vbs
C:
cd "C:\ПУТЬ"
Set _START=start /HIGH "" "hlds.exe"
%_START%
:_1
tasklist | find /i "hlds.exe">nul
if not %errorlevel%==0 %_START%
cscript sleep.vbs 500 > nul
goto _1
Автор: NIKZZZZ
Дата сообщения: 14.04.2007 17:30
InSe0F

Цитата:
может кто посоветует менее ресурсоёмкое решение паузы?


100 sec. 0% загрузки.

Код: echo wscript.sleep 100000>"%Temp%/sleep.vbs"
cscript "%Temp%\sleep.vbs"> nul
Автор: Maza Faka
Дата сообщения: 14.04.2007 17:46
testir

Цитата:
структура следующая:
D:\temp\serv1\folder1\11.04.27 - очистить
D:\temp\serv1\folder2\11.04.27 - очистить
D:\temp\serv1\.....\11.04.27 - очистить
D:\temp\serv2\......\11.04.27 - очистить
D:\temp\fujik\........\11.04.27 - пропустить

А не проще ли тогда вот так:

Код:
@Echo off
For /R D:\Temp %%a in (.) do (
If /i not "%%~nxa"=="fujik" rd /s /q %%a)
Автор: Elroir
Дата сообщения: 14.04.2007 19:20
Maza Faka

Цитата:
А не проще ли тогда вот так

Ты же так сотрешь вообще все папки отличные от "fujik"

testir

Цитата:
вот это то что нужно!!! )

Рад, что наконец заработало
Автор: testir
Дата сообщения: 14.04.2007 19:32
Ещё такой вопросик, как учитывать выходные дни при расчете даты в примере приведенном тут ?http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=9040&start=647&limit=1
Возможно ли вообще их учитывать ?
Автор: Elroir
Дата сообщения: 14.04.2007 19:44
testir

Цитата:
Ещё такой вопросик, как учитывать выходные дни при расчете даты в примере приведенном тут ?

Насколько я понимаю - встроенными средствами командной строки это сделать очень сложно (можно, при определенном формате системной даты). Посмотри в шапке пример получения предыдущего дня с помощью VBScript.
Если добавить туда строчку "wscript.echo WeekDayName(weekday(date))", то будет выдаваться день недели. Таким образом можно проверять выходные.
Автор: InSe0F
Дата сообщения: 14.04.2007 19:50
NIKZZZZ
Elroir
Maza Faka
ВСЕМ ОГРОМНЕЙШЕЕ ПАСИБА :)

вот что в итоге получилося, может кому пригодится. ;)
file - start.bat

Код: copy c:\windows\system32\cmd.exe "%temp%\cmd2.exe"
hstart /NOWINDOW /IDLE "%Temp%\cmd2.exe /c "script.bat"
Автор: AZJIO
Дата сообщения: 14.04.2007 20:34
Подскажите как очистить папки, что то у меня не получается, желательно, например в папке Temp вместе удалить одноуровневые папки и файлы.


Цитата:
RMDIR /f /Q "%SystemRoot%\Temp\*"
RMDIR /f /Q "%UserProfile%\Local Settings\Temp\*"
RMDIR /f /Q "%UserProfile%\Local Settings\Temporary Internet Files\*"
Автор: Elroir
Дата сообщения: 14.04.2007 20:43
AZJIO

Код:
pushd
cd /d "%SystemRoot%\Temp"
rd /s /q "%SystemRoot%\Temp">nul 2>nul
cd /d "%UserProfile%\Local Settings\Temp"
rd /s /q "%UserProfile%\Local Settings\Temp">nul 2>nul
cd /d "%UserProfile%\Local Settings\Temporary Internet Files"
rd /s /q "%UserProfile%\Local Settings\Temporary Internet Files">nul 2>nul
popd
Автор: igor_andreev
Дата сообщения: 14.04.2007 23:30
Elroir

Цитата:
Если добавить туда строчку "wscript.echo WeekDayName(weekday(date))", то будет выдаваться день недели. Таким образом можно проверять выходные.

Кстати, в vbscript есть удобная фича для использования в батниках - можно при выходе из скрипта, в зависимости от условий задать произвольное число(errorlevel).
WScript.Quit(число). То есть вот такой test.vbs

Код: If WeekDay(Date)=vbSaturday or WeekDay(Date)=vbSunday then WScript.Quit (666)
Автор: Elroir
Дата сообщения: 14.04.2007 23:34
igor_andreev
Я на то и расчитывал, что ты что-нибудь интересное подкинешь
Я ж эту строчку из твоего поста стянул
Автор: igor_andreev
Дата сообщения: 14.04.2007 23:51
Elroir
Факт, я люблю подкрадываться к топику про батники с предложениями поюзать vbscript
Автор: Smitis
Дата сообщения: 15.04.2007 00:20
Microsoft выпустила обновлённый Support Tools для Windows 2003 с установленным SP2
http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90
Небольшой наборчик утилит, в том числе работающих из командной строки. У некоторых обновилась версия, у некоторых только дата. В общем, может кто найдёт в нём для себя что-нибудь нужное.
Примечателен один момент - в архиве 4 командный файла. Три из них - те самые гибридные (CMD+PERL).
Автор: Maza Faka
Дата сообщения: 15.04.2007 10:00
testir
Elroir

Цитата:
структура следующая:
D:\temp\serv1\folder1\11.04.27 - очистить
D:\temp\serv1\folder2\11.04.27 - очистить
D:\temp\serv1\.....\11.04.27 - очистить
D:\temp\serv2\......\11.04.27 - очистить
D:\temp\fujik\........\11.04.27 - пропустить


Не могу успокоиться! Вот так ещё проще:

Код:
For /F %%a in ('Dir /b /s D:\Temp ^| Find /i /v "fujik"') do (
If /i "%%~nxa"=="11.04.27" rd /s /q %%a>NUL)
Автор: NIKZZZZ
Дата сообщения: 15.04.2007 11:01
igor_andreev

Цитата:
я люблю подкрадываться к топику про батники с предложениями поюзать vbscript

Тогда маленький вопросик, как правильно и красиво передать передать VBS скрипту значение значение переменной, содержащей "плохие" символы - ."<> b и т.д. не использую временный файл?
Автор: Elroir
Дата сообщения: 15.04.2007 11:09
Maza Faka

Цитата:
Не могу успокоиться! Вот так ещё проще

Тогда добавь к dir-у "/ad", а то если он (батник) найдет файл с именем 11.04.27, он его попытается удалить командой rd
Автор: igor_andreev
Дата сообщения: 15.04.2007 12:07
Maza Faka
И с учетом добавки Elroir и моим нежеланием пользоваться в этом случае IF можно так

for /f "tokens=*" %%a in ('dir /a:d /b /s D:\Temp ^| find /i /v "fujik" ^| find "11.04.27"') do rd /s /q "%%a"

NIKZZZZ

Цитата:
правильно и красиво передать передать VBS скрипту значение значение переменной, содержащей "плохие" символы - ."<> b и т.д. не использую временный файл?

Ты про что? Пример приведи.



Автор: NIKZZZZ
Дата сообщения: 15.04.2007 14:30
igor_andreev

Цитата:
Пример приведи.

Есть строка, прочитанная, например из HTML файла , и присвоенная переменной . В строке используются символы <>|", и т.п. Передать из батника такую строку vbs скрипту для обработки , как параметр командной строки нельзя. Как это можно сделать, не создавая временный файл и не используя сам HTML файл (в принципе VBS скрипту можно передать только номер строки и имя файла - но это частное решениe)?
Автор: igor_andreev
Дата сообщения: 15.04.2007 15:02

Цитата:
Как это можно сделать, не создавая временный файл и не используя сам HTML файл

Задача из серии "Компьютер позволяет легко решать проблемы, которые до его изобретения вообще не существовали"
Я такие вещи на vbscript и пишу, зачем себе голову забивать то и отнимать свое собственное время. Есть конечно батники, в которых использую конструкции вроде:

REM Меняем > на ^>
SET LINE=!LINE:^>=^^^>!
REM Меняем < на ^<
SET LINE=!LINE:^<=^^^<!
REM Меняем ^& на ^^^&
SET LINE=!LINE:^^^&=^^^^^&!
... и т.д., пока все возможные бяки не перечислишь, но этож неудобно...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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