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

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

Автор: gryu
Дата сообщения: 23.06.2010 14:23
гм.
"Нам бы схемку аль чертёж..." (с)
Я не знаю языка vbs.
Мне собственно нужно
1. выбор файла
2. выбор папки
Автор: us0r
Дата сообщения: 23.06.2010 14:32
gryu
А погугли ка (у мну времени нет) о rundll32.exe... Не исключено (где- то на oszone.net) что была возможность вызова окошка прямиком из батнега... Если не ошибаюсь- было связано с InfInstall...
Автор: res2001
Дата сообщения: 23.06.2010 14:49
gryu
В стандартном VBS нет возможности показать такое окно. Можно попробовать извратится через ишака это сделать с соответствующим html шаблоном. Но готового решения у меня тоже нет.
us0r
Возможно через rundll32.exe и можно вызвать окно выбора файла, но rundll32.exe не передаст выбранный файл назад в батник.
Автор: us0r
Дата сообщения: 23.06.2010 14:55
res2001
Разве путь к файлу/папке пишется в /dev/nul? По моему путь к файлу/папке он должен куда- то засовывать (ну в переменную, дескриптор STDIN, ещё куда)...
А насёт VBS- ну это в соответствующую ветку... Но вроде бы это возможно... ActiveX/OLE IE и не только дадут это сделать... Просто я непомню(((
Автор: JekaRus
Дата сообщения: 23.06.2010 15:37
Как можно экспортнуть названия всех групп в AD со списком всех кто входит в каждую группу?
Автор: wolf0425
Дата сообщения: 23.06.2010 15:56

Цитата:
"Нам бы схемку аль чертёж..." (с)
Я не знаю языка vbs.
Мне собственно нужно
1. выбор файла
2. выбор папки

[more=держи]
Код: @set @x=0 /*
@echo off
rem based on example from http://forum.script-coding.info/viewtopic.php?id=64

for /f "tokens=1*" %%a in ('cscript //nologo //H:cscript //e:jscript "%~f0"') do echo file=%%b
exit

*/
// start Jscript part
//
Main();

function Main()
{
var sFiles, nFiles;
var aFiles = GetFileList();
sFiles = '';
if ( (nFiles = aFiles.length) > 0 )
{
for (var i = 0; i < nFiles; i++)
sFiles += ' ' + (i + 1) + '. ' + aFiles[i] + '\n';
}
WScript.Echo(sFiles);
return(nFiles);
}


function GetFileList()
{
var oFileDlg, aFiles;
try
{
oFileDlg = new ActiveXObject("MSComDlg.CommonDialog");
with ( oFileDlg )
{
// const int cdlcdlOFNHideReadOnly = 4 (0x4); Делает невидимым переключатель Read Only.
// const int cdlOFNNoChangeDir = 8 (0x8); Вынуждает диалоговое окно устанавливать текущий каталог в тот, который был при предыдущем открытии.
// const int cdlOFNAllowMultiselect = 512 (0x200); Пользователь может выбрать более чем один файл. (multiple selections).
// const int cdlOFNFileMustExist = 4096 (0x1000); Определяет, что можно вводить имена только существующих файлов. User can enter only names of existing files.
// const int cdlOFNExplorer = 524288 (0x80000); Определяет внешний вид окна выбора.
// const int cdlOFNLongNames = 2097152 (0x200000); Позволяет пользователю использовать длинные имена файлов Long filenames enable.
Flags = 4 + 8 + 512 + 4096 + 524288 + 2097152;
CancelError = false;
MaxFileSize = 8192;
filename = "";
InitDir = "";
DialogTitle = 'Выбор файлов: Удерживая Ctrl отметьте требуемые файлы.'
Filter = "Все файлы|*.*|MS Word файлы|*.doc|MS Excel файлы|*.xls|Текстовые файлы|*.txt";
FilterIndex = 1;
ShowOpen();
if ( filename.length > 0 )
{
aFiles = filename.split("\0");
if ( aFiles.length > 1 )
{
var nFiles = aFiles.length - 1;
var sPath = aFiles[0];
if ( sPath.charAt(sPath.length-1) != "\\" )
sPath += "\\";
for(var nCnt = 0; nCnt < nFiles; nCnt++)
aFiles[nCnt] = sPath + aFiles[nCnt + 1];
aFiles.length = nFiles;
}
}
}
}
catch(e)
{
}

if ( aFiles == null )
return( new Array() );
return( aFiles );
}
Автор: ComradG
Дата сообщения: 23.06.2010 16:38
res2001
http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=480#lt
Автор: JekaRus
Дата сообщения: 23.06.2010 16:49
Нашел скрипт экспорта из АД групп. Как теперь в полученном файле удалить все строчки содержащие слово Disable?
Автор: king_stiven
Дата сообщения: 23.06.2010 17:03
JekaRus

Цитата:
Как теперь в полученном файле удалить все строчки содержащие слово Disable?

FINDSTR
/C:строка Использует заданную строку как искомую фразу поиска.
/V Печатает строки, не содержащие совпадений с искомыми.
Автор: gryu
Дата сообщения: 23.06.2010 18:41
wolf0425
Что то не пойму что он делает.
Запускается и сразу закрывается.
Ну если поставить pause, то висит на паузе. соответсвенно
Убрал @echo off, вижу что обрабатывается строка for /f "tokens=1*" %%a in ('cscript //nologo //H:cscript //e:jscript "%~f0"') do echo file=%%b и на том всё.
Явовский скрипт похоже вообще не запускается.
Автор: wolf0425
Дата сообщения: 23.06.2010 18:57
gryu
Цитата:
Что то не пойму что он делает.
Запускается и сразу закрывается.
ну вообще-то он должен выдавать стандартное виндовое окно на выбор файла, у меня вот исправно выдает, ждет пока выберу.
почему у тебя яваскрипт не запускается - интересный вопрос...
какая система хоть?

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


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


Код: @echo off
1>%temp%\browse.vbs (
echo.Set objDialog = CreateObject^("UserAccounts.CommonDialog"^)
echo.objDialog.Filter = "text|*.txt;*.log;*.ini|All|*.*"
echo.objDialog.FilterIndex = 1
echo.objDialog.InitialDir = "C:\"
echo.objDialog.Flags = 4 + 4096 + 524288 + 2097152
echo.intResult = objDialog.ShowOpen
echo.If intResult = 0 Then
echo. Wscript.Quit
echo.Else
echo. Wscript.Echo objDialog.FileName
echo.End If
)

for /f "tokens=*" %%a in ('cscript //nologo "%Temp%\Browse.Vbs"') do echo file=%%a

exit
Автор: gryu
Дата сообщения: 23.06.2010 21:11
gryu
Ось Windows 7.
Цитата:
@echo off
1>%temp%\browse.vbs ...(

В ответ

Цитата:
C:\Users\WINTES~1\AppData\Local\Temp\Browse.Vbs(1, 1) Ошибка выполнения Microsoft VBScript: Невозможно создание объекта контейнером ActiveX: 'UserAccounts.CommonDialog'
.

Автор: WesternLight
Дата сообщения: 23.06.2010 21:13
Здравствуйте! Прошу помощи, вижу рядом wolf0425

wolf0425, помоги, плиз, я все с тем же кодом, который меняет шрифт консоли. Проблема вот в чем, когда это в реестре:

Код: [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"FontSize"=dword:0010000c
"FontFamily"=dword:00000030
"FaceName"="Terminal"
"HistoryNoDup"=dword:00000000
Автор: SPY
Дата сообщения: 23.06.2010 21:17
us0r
http://www.rapidshare.ru/1547093
Автор: wolf0425
Дата сообщения: 23.06.2010 21:42

Цитата:
Здравствуйте! Прошу помощи, вижу рядом wolf0425
да мне сейчас бежать, сижу звонка жду.


Цитата:
то батник бесконечно перезапускается, проверил все - не понимаю...

виноват, схалявил
do "%CD%\reg.exe" delete "%%~A" /f
Автор: WesternLight
Дата сообщения: 23.06.2010 22:42

Цитата:
do "%CD%\reg.exe" delete "%%~A" /f

wolf0425, спасибо! завтра попробую...
Автор: wolf0425
Дата сообщения: 23.06.2010 23:10
кто мне объяснит - от чего зависит каким бипом блямкнет
rundll32 user32.dll,MessageBeep
1. чего бы ей прописать, чтоб бипы всегда звучали одинаково.
2. чего бы прописать, чтоб устойчиво получать те блямсы, что я слышу в результате этой команды только иногда, совершенно неожиданно вместо дефолтового глуховатого бипа.
Автор: res2001
Дата сообщения: 24.06.2010 07:45
wolf0425
Вот что пишут в МСДН.
Только у меня почему то результат один и тот же не зависимо от параметров. Правда время от времени вообще звуков нет.


Добавлено:
Похоже, любой передаваемый параметр не доходит до MessageBeep, т.к. rundll передает в функцию еще и хэндл окна, указатель на командную строку и т.п. А функция должна сама все это разбирать, ну а MessageBeep этого не делает.
Вот тут подробно о работе rundll32.
Разве что чисто случайно хэндл окна совпадет с одним из воспринимаемых функцией значений и она прозвенит соответствующим образом.
Автор: mugil_cephalus
Дата сообщения: 24.06.2010 10:22
wolf0425

Цитата:
кто мне объяснит - от чего зависит каким бипом блямкнет

после пятой запуска писки прекратились - не пищит... (ни из батника, ни через консоль ; через консоль и через bat - звуки были разные )
вообще у меня всегда пищало через колонки , через сис. динамик - никогда win 5.1 sp3 rus
здесь - http://dx21.com/coding/libraries/rundll32/default.aspx (литера B ) - пишут поддержка только для win98
этот call попадался мне где то здесь
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2033&limit=1&m=1#1
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2034&limit=1&m=1#1
p.s.
ну это все... -
Код: echo.
Автор: res2001
Дата сообщения: 24.06.2010 10:47
mugil_cephalus

Цитата:
здесь - http://dx21.com/coding/libraries/rundll32/default.aspx (литера B ) - пишут поддержка только для win98

Только в вин98 потому что в приведенной ссылке используется библиотека user.dll, а в вин2000 и далее уже user32.dll
Автор: mugil_cephalus
Дата сообщения: 24.06.2010 10:58
res2001

Цитата:
Только в вин98 потому что в приведенной ссылке используется библиотека user.dll, а в вин2000 и далее уже user32.dll

не важно, у меня и 32-битная библиотека на этот вызов не стабильна ( сейчас обнаружил, т.к. этим вызовом пользовался пару раз ) ; к тому же чем старше винда, тем разработчики microsofta все больше отказываюся от эксплуатации rundll32 и сокращают кол-во доступных колов
Автор: res2001
Дата сообщения: 24.06.2010 11:06
mugil_cephalus

Цитата:
у меня и 32-битная библиотека на этот вызов не стабильна

аналогично
Автор: wolf0425
Дата сообщения: 24.06.2010 11:10
ну ладно, я понял что rundll32 user32.dll,MessageBeep блямкает в ХР чисто случайно, и закладываться на неё не надо.

Есть ли какой-то штатный способ из консоли попросить винды (win2k+) проиграть какой-нибудь %windir%\media\ringin.wav (без открытия левых окон проигрывателей, конечно же)
Автор: mugil_cephalus
Дата сообщения: 24.06.2010 11:15
wolf0425
поищи в GetRunDL.vbs List all RUNDLL(32) commands for file associations from the registry http://www.robvanderwoude.com/files/getrundl_vbs.txt

Добавлено:
хотя вроде тоже самое можно получить и так

Код: ftype |find /i "rundll"
Автор: res2001
Дата сообщения: 24.06.2010 11:38
wolf0425
sndRec32.exe /play /close /embedding ding.wav
Автор: boy999
Дата сообщения: 24.06.2010 11:46
А тут есть спецы, знающие, как запустить MBR со скрытым окном!?

Вот рабочий скрипт на флэшке:
Set WSHShell = WScript.CreateObject("WScript.Shell")
CurDir = WSHShell.CurrentDirectory
WSHShell.Run CurDir & "\\mpr\\MPR.exe /export", 0



Можно ли и чего там надо добавить для скрытого запуска!?
Автор: res2001
Дата сообщения: 24.06.2010 11:50
boy999
тут смотри, как раз обсуждалась эта тема.
Автор: ComradG
Дата сообщения: 24.06.2010 11:57
res2001
Дай наводку на тему vbs'ок плиз, я boy999 подробно расскажу что к чему.
Автор: BVV63
Дата сообщения: 24.06.2010 12:01
Приветствую усех.
Прошу прощения за профанский вопрос. Согласно мною читанному в конструкции for... in... do... для команд нужно использовать знак `, типа: `команда`. И вот работающий скрипт из седьмой "серии" данной темы, в котором это правило выполняется, и он работает:
http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=17154&start=1940#21
Почему у меня никогда не работает эта конструкция, если я использую `? А вот ежели знак ', то - работает.
Вот простой пример:
For /F "Skip=1 Tokens=*" %%A In ('WMIC /Node:LocalHost OS Get LocalDateTime') Do Echo %%A
Достаточно сменить знак ' на `- работать перестаёт.
Автор: res2001
Дата сообщения: 24.06.2010 12:02
ComradG

Цитата:
Дай наводку

да нету наводок то особых.
Юзаю хелп родной, да гугл

Добавлено:
BVV63
Для того чтобы работали обратные кавычки надо использовать ключевое слово usebackq.
кури for /?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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