Войти

Показать полную графическую версию : [решено] Вызов GUI для выбора папки


vivera864864
27-05-2011, 20:18
Подскажите скрипт чтобы выбрать папку через стандартый GUI и записать её имя в переменную
Как это:
http://i22.fastpic.ru/big/2011/0527/14/ee78b4d15429b5c72e4f7b03d628ce14.png
И ещё подскажите без каких файлов он работать не будет?
Заранее спасибо

ferget
27-05-2011, 20:42
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "about:<FORM><INPUT type='file' name='qq'></FORM><script>document.forms[0].elements[0].click();var F=document.forms[0].elements[0].value;try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(F)};catch (e){};close();</script>" ^
1^|more`
) do set sFileName=%%i

chcp %sPrevCP% >nul

if defined sFileName (
echo Выбран файл: [%sFileName%].
) else (
echo Файл не был выбран.
)

endlocal
exit /b 0

здесь обсуждается как сделать без mshta.exe

http://forum.oszone.net/thread-207216.html

vivera864864
27-05-2011, 21:52
ferget, Спасибо

А нет, не то надо ПАПКУ, а не файл((

А нет, не то надо ПАПКУ, а не файл((

ferget
27-05-2011, 23:59
есть такое окно

@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
1^|more`
) do set sFolderName=%%i

chcp %sPrevCP% >nul

if defined sFolderName (
echo Выбрана папка: [%sFolderName%].
) else (
echo Папка не была выбрана.
)

endlocal
exit /b 0

vivera864864
28-05-2011, 05:26
ferget, Ну не то я хочу как на скине

ferget
28-05-2011, 06:29
это окно не является стандартным, его сделали для µTorrent

vivera864864
28-05-2011, 09:51
ferget, жалко :'(

ferget
28-05-2011, 10:25
ну в принципе можно такое сделать на Powershell, но сложно

vivera864864
28-05-2011, 11:31
ferget, это уже не так важно, теперь надо заставить работать в winpe 3.0

HFShak
10-12-2013, 10:08
@echo off
setlocal
for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)
for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "about:<FORM><INPUT type='file' name='qq'></FORM><script>document.forms[0].elements[0].click();var F=document.forms[0].elements[0].value;try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(F)};catch (e){};close();</script>" ^
1^|more`
) do set sFileName=%%i
chcp %sPrevCP% >nul
if defined sFileName (
echo Выбран файл: [%sFileName%].
) else (
echo Файл не был выбран.
)
endlocal
exit /b 0
здесь обсуждается как сделать без mshta.exe
http://forum.oszone.net/thread-207216.html »

Добрый день!
А как сделать так, чтобы выбирались только .txt файлы?




© OSzone.net 2001-2012