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

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

Автор: igor_andreev
Дата сообщения: 05.02.2007 02:11
ViSiToR

Цитата:
(где то я уже об этом слышал/видел...)

Ну раз AutoIt пользуешься, то где-то в ридми и видел наверное. Там какая-то функция DLLCall есть, вроде можно WM_SETTINGCHANGE окну послать, типа вот. А я ни разу AutoIt не юзал
Elroir

Цитата:
А UpdatePerUserSystemParameters у меня почему-то не срабатывает.

Да она срабатывает, но как-то однобоко. Вот попробуй например обоину на рабочем столе сменить без всяких посторонних софтин. Любое_имя.vbs и вместо D:\test.bmp свою картинку напиши в формате BMP.

Код:
Set WshShell = WScript.CreateObject("Wscript.Shell")
WshShell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", "D:\test.bmp"
WshShell.Run "RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 0, False
WScript.Quit
Автор: Elroir
Дата сообщения: 05.02.2007 02:52
igor_andreev

Цитата:
Вот для XP пример смены обоины батником

Это у меня работает
А вот все, чего я добился играя с WM_SETTINGCHANGE - это то, что у меня сбросились все настройки в Folder View
Автор: Nagual
Дата сообщения: 05.02.2007 05:05
igor_andreev
а можешь привести пример закачки двух файлов на запароленный фтп, используя скрипты, приведенные раньше?
а то там не для средних умов написано, спасибо
Автор: Nekt
Дата сообщения: 05.02.2007 05:16
как вырубать комп ? RunDll32.exe SHELL32.DLL,SHExitWindowsEx 2
RunDll32.EXE USER.EXE,ExitWindowsExec не идут пишут типа нету токаго параметра... Если моно подброюный хелп команд rundll а то в шапке что-то не понятное.
Автор: igor_andreev
Дата сообщения: 05.02.2007 05:52
Nagual
В шапке ''Задачи на bat-файлах (часть 1 [?])", делаешь версию первой части для печати и по слову "ftp" несколько простейших примеров найдешь.
Nekt
Ты не написал, какая у тебя Windows. Если XP/2003, то в комстроке набери shutdown /?
А в описании команд rundll32 по ссылке из шапки, кроме всего прочего, около каждой команды написано "Works on:" и бледным шрифтом отмечены версии OS, на которых эта команда НЕ работает.
Автор: Nekt
Дата сообщения: 05.02.2007 10:07
XP, а вот shutwodn пользоватьса отказывыюсь.
Автор: Elroir
Дата сообщения: 05.02.2007 11:01
Nekt

Цитата:
RunDll32.exe SHELL32.DLL,SHExitWindowsEx 2
RunDll32.EXE USER.EXE,ExitWindowsExec

Эти команды в WinXP не работают. Microsoft рекомендует использовать утилиту shutdown.exe. Можешь воспользоваться утилитой, которую написал ViSiToR (в шапке Утилиты выключения и перезапуска компьютера)
Автор: StanislavG
Дата сообщения: 05.02.2007 14:25
Elroir
Большое спосибо если бы я находился где то радом с тобой обязательно пришел поблагодарил
Автор: ViSiToR
Дата сообщения: 05.02.2007 15:29
Elroir

Цитата:
А как изменения вступают в силу?

Вызывается окно свойства папки, затем переходит на таб Вид, и нажимается ОК, далее скрипт пробегает по всем окнам експлорера (это я недавно сделал), и нажимает в них F5 , потом сворачивает все окна и нажимает F5 на рабочем столе, далее возвращает все окна как было (в тот момент когда был запущен скрипт).

Кстати, подобное и на батнике можно сотворить - запускаем свойства папки (через RunDll32.exe shell32.dll,Options_RunDLL 0), VBS'ом перекидываем вкладку и нажимаем ОК, далее пробегаем по всем открытым окнам и также VBS'ом жмём в них F5 - получится сделать? (правда батником будет дольше - на AutoIt, при открытых 5-ти окнах, это занимат около 3-ёх - 4ёх секунд).

igor_andreev

Цитата:
вроде можно WM_SETTINGCHANGE окну послать, типа вот

Пробовал, но это не действует, там пример для обновления кеша (для иконок), а тут нужно обновить общие настройки... будем искать.
Автор: miheenko
Дата сообщения: 07.02.2007 09:37
перенес в другой раздел
Автор: Elroir
Дата сообщения: 07.02.2007 10:15
miheenko

Код:
@echo off
setlocal enabledelayedexpansion
for /f %%a in (stolbik.txt) do set "text=!text! %%a"
echo %text:~1%>>out.txt
Автор: Tipulatoid
Дата сообщения: 07.02.2007 13:43
Детский вопрос:
А что, команда start не работает с именами файлов, содержащими пробелы? Кавычки не помогают
Автор: StanislavG
Дата сообщения: 07.02.2007 14:46
igor_andreev
А не мог бы объяснить что-где что?

Цитата:
ECHO wscript.echo date-1>tmp.vbs
FOR /F %%A IN ('cscript tmp.vbs //Nologo') DO SET "YESTERDAY=%%A"
ECHO %YESTERDAY%&DEL tmp.vbs

Автор: zubastiy
Дата сообщения: 07.02.2007 15:10
добрый день.
подскажите плз возможно ли силами командных файлов осуществить следующую операцию.

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

что то вроде ниже приведенного

telnet ххх.ххх.ххх.ххх 1000
жди оттуда данных
когда данные получены > c:\2.txt
закрываем телнет

спсб %)
Автор: StanislavG
Дата сообщения: 07.02.2007 15:45
Elroir

А возможно ли добавить 0 к значению если да то как
Автор: Elroir
Дата сообщения: 07.02.2007 17:00
Tipulatoid

Цитата:
А что, команда start не работает с именами файлов, содержащими пробелы?

Работатет:

Код: start "" "c:\dir with spaces\file with spaces in the name.exe"
Автор: Maza Faka
Дата сообщения: 07.02.2007 17:58
Tipulatoid

Цитата:
Детский вопрос:
А что, команда start не работает с именами файлов, содержащими пробелы? Кавычки не помогают


Команда Start не любит длинные пути. Либо используй сокращения, например:
C:\Progra~\MyProg\prog.exe либо запускай при помощи параметра /d например так:

Код: start /d "C:\Program Files\My Program\" program.exe
Автор: SunnySky
Дата сообщения: 07.02.2007 18:13
Как я рада что вас нашла!!!!!!!!!!!!

Щас передомной стоит такая задача:
в 2 часа ночи запускается процесс, оставляющий после себя подробные логи. По его завершении надо проверить все ли прошло без ошибок, и если вдруг ошибки были перезапустить. Наиболее вероятная причина ошибок - не удалось залить файлы на ftp сервер. Т.е. надо повторить раза 3 с интервалами в 5, 30 минут и скажем час.

Так вот собственно вопрос:
возможно ли с помощью cmd/bat файлов заставить запустится задачу через 5 минут? или час? причем количество таких запусков должно быть ограничено

Автор: KciNKh
Дата сообщения: 07.02.2007 18:40

Цитата:
в 2 часа ночи запускается процесс, оставляющий после себя подробные логи. По его завершении надо проверить все ли прошло без ошибок, и если вдруг ошибки были перезапустить. Наиболее вероятная причина ошибок - не удалось залить файлы на ftp сервер. Т.е. надо повторить раза 3 с интервалами в 5, 30 минут и скажем час.


практически элементарно, создаешь 4 файла, например run200.cmd, run205.cmd, run230.cmd и run300.cmd в первом пишешь (без === ):
============
@echo off
SET Run_Prog=your_app.exe
SET log=YourApp.log
SET FindErr=Error

start /w "%Run_Prog%"
find /I "%FindErr%" "%log%" >nul
if ERRORLEVEL 1 goto exit
at 2:05 "%~dp0run205.cmd"
:exit
============
с переменными (после SET) должно быть все ясно, если нет, то спрашивай

во втором все тоже самое только время и имя файла следующие другое в строке
at 2:30 "%~dp0run230.cmd"
и т.д. сколько раз нужно.
теперь пишешь в командной строке (в папке с этими файлами)
at 2:00 run200.cmd
и всё Enjoy.

* Единственное условие это Windows NT и работающий сервис "Планировщик заданий".

немного коряво но работающее.
Автор: Tipulatoid
Дата сообщения: 08.02.2007 00:00
Elroir,Maza Faka - спасибо
StanislavG
Пока igor_andreev нет, я попробую растолковать:

Код: ECHO wscript.echo date-1>tmp.vbs
Автор: JohnRD
Дата сообщения: 08.02.2007 09:50
привет всем

помогите пожалуйста разобрать папку в которую постоянно падают файлы 1.zip, 2.zip, 3.zip, ....
нужно создавать папки с именами такими же как имена архивов и туда класть содержимое того архива, поскольку содержимое одинаковые имена файлов..


Код: for /f %%a "delims=. tokens=1" in (c:\a\*.zip) do if ...... set %%a=filename
Автор: Jene
Дата сообщения: 08.02.2007 10:09

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


Очевидно, планировщиком?

Дальнейшие интервалы, зависящие от результатов предыдущих заданий, удобно задавать утилиткой sleepy.exe (не в 2:05, а через пять минут после отработки первого вызова.

Например, на строке

sleepy.exe 20

работа будет продолжена через 20 секунд.
Автор: StanislavG
Дата сообщения: 08.02.2007 12:19
Elroir
Помоги мне плиз у меня сегодня выдало ошибку

Цитата:
set /a prevd=08-1
Неправильное число. Числовые константы должны быть десятичными (17) шестнадцатеричными (0х11), или восьмеричными (021)


Автор: igor_andreev
Дата сообщения: 08.02.2007 12:35
StanislavG
И завтра выдаст. set /?

Цитата:
Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел, и 0 для восьмеричных чисел. Например, числа 0x12, и 022 обозначают десятичное число 18. Обратите внимание на запись восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в восьмеричной системе исчисления цифры 8 и 9 не используются.
Автор: Elroir
Дата сообщения: 08.02.2007 14:01
StanislavG
Ты используешь старый код или исправленный?
Исправленный работает нормально - только что проверил.

Добавлено:
JohnRD

Код:
@echo off
for %%a in (c:\a\*.zip) do (
md c:\a\%%~na 2>nul
unzip %%a -d c:\a\%%~na
)
Автор: StanislavG
Дата сообщения: 08.02.2007 14:42
Elroir
Вот в этом батнике у меня выдала ошибку

Цитата:
rem @echo off
rem start %time%
setlocal
set dt=%date%
FOR %%I IN (*.*) DO call :finddate "%%I" %dt:~0,2% %dt:~3,2% %dt:~6,4%

rem cd w:\nbumail\journal
REM arj32 m w:\nbumail\journal\jour%prevd%%prevm%.dh0 w:\nbumail\journal\ *.old *.rsa *.ind *.key *.pud *.rsa *.lo1 *.er1 *.err *.nbu *.pub *.new *.log

goto :EOF

:finddate
for /F "usebackq tokens=1,2,3,4 delims=. " %%A IN (`"dir /T:C %1 | find %1"`) DO call :test %%A %%B %%C %1 %2 %3 %4
goto :EOF

:test
rem File's date
set fd=%1
set fm=%2
set fy=%3
rem Current date
set curd=%5
set curm=%6
set cury=%7
Цитата:
set /a prevd=%curd%-1

set prevm=%curm%
set prevy=%cury%
set prevye=%cury%
if %curm%==12 (set prevme=11& set days=30)
if %curm%==11 (set prevme=10& set days=31)
if %curm%==10 ( set prevme=09& set days=30)
if %curm%==09 ( set prevme=08& set days=31)
if %curm%==08 ( set prevme=07& set days=31)
if %curm%==07 ( set prevme=06& set days=30)
if %curm%==06 ( set prevme=05& set days=31)
if %curm%==05 ( set prevme=04& set days=30)
if %curm%==04 ( set prevme=03& set days=31)
if %curm%==03 ( set prevme=02& set days=28)
if %curm%==02 ( set prevme=01& set days=31)
if %curm%==01 ( set prevme=12& set days=31& set /a prevye=%prevy%-1)
if %prevd% LEQ 0 (
set /a prevd=%days%+%prevd%
set prevm=%prevme%
set prevy=%prevye%)
set match=true
if not "%fd%"=="%prevd%" ( set match=false)
if not "%fm%"=="%prevm%" ( set match=false)
if not "%fy%"=="%prevy%" ( set match=false)
if "%match%"=="true" (
copy c:\tcpfoss.452\%4 c:\tcpfoss.452\jnin\
copy c:\tcpfoss.452\log\%4 c:\tcpfoss.452\jnin\
move c:\tcpfoss.452\%4 w:\nbumail\journal
move c:\tcpfoss.452\log\%4 w:\nbumail\journal
)
Автор: ViSiToR
Дата сообщения: 08.02.2007 15:53
Два вопроса:

1. Возможно ли исключительно средствами виндоус (хотябы XP) скачать файл с сети (http и ftp хотябы)?

2. Возможно ли исключительно средствами виндоус (хотябы XP) распаковать архив zip, 7z, и rar?
Автор: ViSiToR
Дата сообщения: 08.02.2007 21:55
И ещё, как проверить существование процесса? вроде где то пробегало, но никак немогу найти - желательно тоже коренными средствами.
Автор: Elroir
Дата сообщения: 08.02.2007 22:07
ViSiToR

Цитата:
как проверить существование процесса?

tasklist с параметрами или с find-ом.
Автор: evle
Дата сообщения: 09.02.2007 05:17
Maza Faka

Цитата:
Команда Start не любит длинные пути.

Ну сколько можно уже повторять… Start воспринимает первый параметр в кавычках как заголовок окна. И откуда вообще взялся /d?
ViSiToR

Цитата:
1. Возможно ли исключительно средствами виндоус (хотябы XP) скачать файл с сети (http и ftp хотябы)?

C ftp можно через ftp.exe. В этой или предыдущей теме писали пример. С http в глубокой теории можно попробовать через telnet, но не думаю, что получится.

Цитата:
2. Возможно ли исключительно средствами виндоус (хотябы XP) распаковать архив zip, 7z, и rar?

Насчёт zip не уверен, остальные нельзя, если не учитывать фокусы вроде «Конвертирование файлов (*.com *.exe *.*) в код батника».

Цитата:
И ещё, как проверить существование процесса?

(tasklist | find "cmd.exe") && (что делать, если процесс есть)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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