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

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

Автор: ViSiToR
Дата сообщения: 02.02.2007 15:11

Цитата:
единственный недостаток, то что надо вспомогательный файл создавать


igor_andreev
Может есть возможность как то его побороть? запустить к примеру cscript.exe (или wscript) с нужными параметрами, чтобы вернуло значение в консоль...

P.S
В шапку добавил как · Использование даты на день раньше чем сегодня (используя VBScript)
Автор: DocBeen
Дата сообщения: 02.02.2007 19:36

Цитата:
Держите самые простые образцы, что можно делать с ftp.exe
ftpscript.zip(полтора килобайта) Readme внутри, установить очень желательно, удаляется легко через Установка-удаление программ "Explorer shell extension "FTP Script""
и два примера mcafee-dat.zip и rarlab-job.zip, оба меньше килобайта. После запуска оставят файлики mcafee.txt и rarlab.txt
Это действительно самые простые, для примера, а можно уу-у какие синхронизации делать. Только надо батники уметь писать Писались под XP, поэтому содержат команду TSKILL, на 2000 можно любую другую прибивалку процессов использовать.


Пробовал Сей скрипт запускать и весьма удачно а как теперь бы его теперь сделать чтоб он с выше цитированному правилу подвергался, малость не допонимаю,
а готовый продукт весьма хорошим может получится:
к примеру у меня на работе пробовал делать скрипт, любезно предоставленный Elroir

и получилось хоть до приметива но все же результаты, получаю файлик со списком всего что лежит на Фтп а как теперь бы с помощью этого списка удалить бы все с помощью:
Цитата:
Код:For /f %%i in (list.txt) do del %%i
For /f %%i in (list.txt) do ftp %%i

подскажите пожалуйста...
Автор: igor_andreev
Дата сообщения: 02.02.2007 19:40

Цитата:
как то его побороть? запустить к примеру cscript.exe (или wscript) с нужными параметрами,
Никак И у cscript.exe и у wscript.exe обязательный параметр <scriptname> при запуске


Добавлено:
DocBeen
Все с фтп удалить - и скрипты не нужны. cd /папка , потом команда prompt и потом mdelete *.*
Автор: Tipulatoid
Дата сообщения: 02.02.2007 21:55
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
Автор: Elroir
Дата сообщения: 02.02.2007 22:55
All
Посмотрите, может стоит изменить шапку так?
Автор: ViSiToR
Дата сообщения: 03.02.2007 01:19
Elroir
Имхо, это сильно ограничивает, для того чтобы что-то найти, нужно будет 2-3 страницы открывать... мы то уже знаем там всё, а вот новички там потеряются

Можно пока только “Готовые решения и частые вопросы:” заключить в more, это значительно уменьшит размер шапки.

Это одно большое, моё ИМХО!
Автор: igor_andreev
Дата сообщения: 03.02.2007 05:58
Tipulatoid

Цитата:
Скажет, это точно, только пишет (если из батника запускать) в DOS кодировке

Веришь-нет, до сего дня не знал Я просто никогда не пишу ничего из батника по-русски, для этого чистый vbscript есть. Хотя пользуюсь давно, я о нем упоминал на этом форуме еще в декабре 2004, как только зарегился. Таким способом я раньше папки создавал

Код:
ECHO wscript.echo WeekDayName(weekday(date))>tmp.vbs
FOR /F %%A IN ('cscript tmp.vbs //Nologo') DO MD %%A
Автор: Elroir
Дата сообщения: 03.02.2007 12:23
ViSiToR

Цитата:
это сильно ограничивает, для того чтобы что-то найти

У меня эта мысль тоже пробегала
Ладно, оставим пока все как есть - действительно хорошо, когда весь список виден.
Автор: Elroir
Дата сообщения: 03.02.2007 16:12
All
Как получить список всех открытых окон эксплорера? То есть мне нужен список открытых фолдеров.
Автор: igor_andreev
Дата сообщения: 03.02.2007 16:34
Elroir
Ну если у тебя в заголовках окон эксплорера пишется полный путь(в свойствах папки настраивается, Folder Options-View-Display the full path in the title bar) и есть cmdow.exe, то можно можно попробовать как-нить типа:
cmdow | find /i "explorer" | find "\"
Ну и там цикл FOR и сколько-то TOKENS
Автор: ViSiToR
Дата сообщения: 03.02.2007 16:58
igor_andreev

Цитата:
если у тебя в заголовках окон эксплорера пишется полный путь

А cmdow не понимает по класу окна?

CabinetWClass (или полностью classname=CabinetWClass)
Автор: Elroir
Дата сообщения: 03.02.2007 17:01
igor_andreev
Спасибо - то, что надо!
Это я пытаюсь решить задачу перезапуска эксплорера, без закрытия всех окон.
P.S. А cmdow.exe у меня копируется в Windows\System32 фолдер при установке Windows .
Автор: igor_andreev
Дата сообщения: 03.02.2007 17:07
ViSiToR
А я не знаю, что такое CabinetWClass В хэлпе cmdow про это не написано. Между прочтением мною вопроса и началом написания ответа вообще секунд тридцать прошло, если честно , особо не задумывался. Сейчас вот смотрю, наверно надо ключ /T добавить и так выведет
cmdow /T | find /i "explorer"
Автор: Elroir
Дата сообщения: 03.02.2007 17:08
igor_andreev

Цитата:
Сейчас вот смотрю, наверно надо ключ /T добавить

Ага - я тоже на это наткнулся
А еще надо добавить /F, чтобы не обрезались названия, в которых больше 38-и символов
Автор: igor_andreev
Дата сообщения: 03.02.2007 17:13
Elroir

Цитата:
решить задачу перезапуска эксплорера, без закрытия всех окон.

А, как раз для cmdow задача и есть, она же и закроет окно и заново запустит
Автор: ViSiToR
Дата сообщения: 03.02.2007 20:07
igor_andreev

Цитата:
что такое CabinetWClass

Это класс окна експлорера - его можно определить к примеру, при помощи WinSpy (я лично юзаю подобную утилиту от AutoIt'а - Au3Info -> AutoIt Window Information Tool).

Elroir

Цитата:
Это я пытаюсь решить задачу перезапуска эксплорера, без закрытия всех окон.

Если решиш отпишись плиз
Автор: Elroir
Дата сообщения: 03.02.2007 21:01
ViSiToR

Цитата:
Если решиш отпишись плиз

Уточняю - мне нужно было восстановить открытые фолдеры после перезапуска эксплорера. То есть закрываются они в любом случае.
Вот что получилось:

Код:
@echo off
chcp 1251>nul
setlocal enabledelayedexpansion
for /f "usebackq tokens=8*" %%a in (`"cmdow /t /f | find /i "explorer""`) do (
if /i "%%a"=="explorer" set "open_windows=!open_windows! "%%b""
)
taskkill /f /im explorer.exe>nul
start explorer
for %%a in (%open_windows%) do (
if /i %%a=="My Computer" (start /min explorer shell:DriveFolder) else (
start /min explorer %%a)
)
Автор: igor_andreev
Дата сообщения: 03.02.2007 22:28
Elroir
Да удобная штучка получилась, бывает нужно иногда рестартануть эксплорер, при зависаниях или еще там когда. В таком виде работает на XP Pro/2003, если вместо taskkill пользоваться tskill, то будет работать и на XP Home(У меня раньше на нескольких ноутах на работе стояла Home, оттуда привычка осталась к tskill.exe, там taskkill нету)
Автор: FXPELIVE
Дата сообщения: 04.02.2007 03:01
Как написать пакетник, переводящий текст вида "Heccrbq ntrcn? yf,hfyysq d fyukbqcrjq hfcrkflrb rkfdbfnehs" в "Русский текст, набранный в английской раскладке клавиатуры"?
Автор: igor_andreev
Дата сообщения: 04.02.2007 03:06
FXPELIVE
Как в шапке "Конвертирование текста из кириллицы в латиницу", свои варианты замены только пишешь.
Автор: rbcl
Дата сообщения: 04.02.2007 03:20
Подскажите пожалуйста, как в цикл
for /f "tokens=*" %%a in (oracle_services.tmp) do net stop "%%a"
встроить %errorlevel% для проверки правильности остановки служб. Никак опять не соображу.
Автор: igor_andreev
Дата сообщения: 04.02.2007 04:22
rbcl
... do (net stop "%%a" || echo Stop "%%a" - Error)

P.S. Ты вроде как собирался синтаксис учить пару-тройку страниц назад и я тебе ссылку на уроки бат-аники давал? Там про вот это "||" написано...
Автор: ViSiToR
Дата сообщения: 04.02.2007 05:14
Elroir

Цитата:
Вот что получилось:

Неплохо получилось (в шапку даже тянет).

В связи с этим есть вопрос ко всем, а возможно ли батником просто вызывать имитацию нажатия клавиш? тогда можно было бы просто проходиться по всем окнам и нажимать в них F5
Автор: Elroir
Дата сообщения: 04.02.2007 13:52
ViSiToR

Цитата:
Неплохо получилось

Спасибо - обновил шапку

Цитата:
возможно ли батником просто вызывать имитацию нажатия клавиш?

IMHO - вряд ли. Тут нужны утилиты, работающие с Win API, вроде того же AutoIt.
Правда я не знаю насчет VBScript...
Автор: rbcl
Дата сообщения: 04.02.2007 14:48

Цитата:

rbcl
... do (net stop "%%a" || echo Stop "%%a" - Error)

P.S. Ты вроде как собирался синтаксис учить пару-тройку страниц назад и я тебе ссылку на уроки бат-аники давал? Там про вот это "||" написано...

Спасибо, про || даже не подумал и ещё зачем мы объединяем в скобках- так не работает.
ПЫСЫ:
Ссылку на уроки читал- спасибо. Но головы у вас явно светлей чем моя, поэтому не судите.
Автор: igor_andreev
Дата сообщения: 04.02.2007 15:56
rbcl
Почему в скобках не работает? Только-что написал несколько сервисов в столбик в serv.txt и запустил:

Код:
@echo off
for /f "tokens=*" %%a in (serv.txt) do (net stop "%%a">nul 2>&1 || echo Stop "%%a" - Error)
Автор: Elroir
Дата сообщения: 04.02.2007 17:19
igor_andreev и All
Если будет время, посмотрите пожалуйста, можно ли как-то вызвать функцию SendMessage из user32.dll, с параметром WM_SETTINGCHANGE. Это как раз то, что говорит всем открытым окнам обновить системные установки. Может можно запустить это через rundll32.exe или с помощью VBScript?
Автор: igor_andreev
Дата сообщения: 04.02.2007 18:54
Elroir
Я не знаю, как вызвать WM_SETTINGCHANGE Для батника через user32.dll предлагаются только ExitWindowsEx, LockWorkStation и UpdatePerUserSystemParameters. Для Vbscript примеров c SystemParametersInfo и SendMessage тоже не видел, на microsoft есть только для С(или какой там это язык, не разбираюсь)
Автор: ViSiToR
Дата сообщения: 05.02.2007 00:05
igor_andreev

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

Да не, для этой затеи я удачно накалякал себе подобные две утилиты гна AutoIt (кстати, получилось даже лучше чем эти расширения, у меня вообще ничего не нужно обновлять).

Мне просто было интересно, возможно ли это на батниках.

Добавлено:
Elroir

Цитата:
вызвать функцию SendMessage из user32.dll, с параметром WM_SETTINGCHANGE

А откуда инфа? (где то я уже об этом слышал/видел...)
Автор: Elroir
Дата сообщения: 05.02.2007 01:25
ViSiToR

Цитата:
А откуда инфа?

Из леса Гугла вестимо . А также из MSDN и www.msfn.org.
Когда в Group Policy что-нибудь меняешь, изменения срабатывают сразу, как только нажмешь ОК или Apply. Вот я и начал искать, какая функция при этом вызывается. Вот так и вышел на message WM_SETTINGCHANGE. А потом уже нашел, что его надо посылать функциями SendMessage или SendMessageTimeout, которые находятся в user32.dll.

Цитата:
получилось даже лучше чем эти расширения, у меня вообще ничего не нужно обновлять

То есть как не надо обновлять? А как изменения вступают в силу?

igor_andreev

Цитата:
Для Vbscript примеров c SystemParametersInfo и SendMessage тоже не видел

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

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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