|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] подключение/отключение томов TrueCrypt |
|
|
VBS/WSH/JS - [решено] подключение/отключение томов TrueCrypt
|
Пользователь Сообщения: 93 |
Профиль | Отправить PM | Цитировать Прошу помощи в переводе данного скрипта BAT на VBS.
@echo off set letr=w set "file=w.tc" set "TrCt=C:\Program Files\TrueCrypt\TrueCrypt.exe" if exist "%letr%:" goto ds "%TrCt%" /l%letr% /v %file% /hn /cn /mrm /q exit :ds "%TrCt%" /d%letr% /q /s /w if exist "%letr%:" goto :ds exit Слишком много файлов набралось и иметь для каждого собственный BAT уже не целесообразно, а один для всех случаев, как BAT не получится. |
|
Отправлено: 23:33, 24-01-2015 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата pzh2393:
Цитата pzh2393:
Пишем батник, который ниже, и кладём ярлык к нему на рабочий стол. Нужный файл бросаем на этот ярлык. @echo off setlocal ::Если батник запущен без параметра (например, просто щелчком по ярлыку), то завершаем его работу if "%1" == "" goto fin ::Иначе во временную переменную вводим путь/имя того файла, который бросили на ярлык к этому батнику set tempvar1=%1 ::и вытаскиваем из неё букву диска, на котором лежит этот файл set letr=%tempvar1:~0,1% ::после чего продолжение (в которое я не вчитывался) вашего батника, ::к которому дописан выход на случай отсутствия параметра %1 set "file=w.tc" set "TrCt=C:\Program Files\TrueCrypt\TrueCrypt.exe" if exist "%letr%:" goto ds "%TrCt%" /l%letr% /v %file% /hn /cn /mrm /q exit :ds "%TrCt%" /d%letr% /q /s /w if exist "%letr%:" goto :ds exit :fin exit |
||
------- Последний раз редактировалось mwz, 25-01-2015 в 01:50. Отправлено: 01:43, 25-01-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Мой вариант в виде пакетного файла:
Скрытый текст
@echo off setlocal enableextensions enabledelayedexpansion set sContainerFile=%~1 if defined sContainerFile ( if exist "%sContainerFile%" ( if exist "%ProgramFiles%\TrueCrypt\TrueCrypt.exe" ( if not exist "%~n1:\." ( start "" "%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /letter %~n1 /volume "%sContainerFile%" /history n /cache n /mountoption removable /quit ) else ( start "" "%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /dismount %~n1 /wipecache /silent /quit ) ) else ( echo Can't find [TrueCrypt.exe] in [%ProgramFiles%\TrueCrypt]. exit /b 3 ) ) else ( echo Can't find TrueCrypt container file [%sContainerFile%]. exit /b 2 ) ) else ( echo Usage: %~nx0 ^<TrueCrypt container file^> exit /b 1 ) endlocal exit /b 0 и на WSH: Скрытый текст
Option Explicit Dim strContainerFile Dim strPath2TrueCrypt Dim strDriveLetter If WScript.Arguments.Count = 1 Then strContainerFile = WScript.Arguments.Item(0) With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strContainerFile) Then strPath2TrueCrypt = .BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:ProgramFiles").self.Path, "TrueCrypt\TrueCrypt.exe") If .FileExists(strPath2TrueCrypt) Then strDriveLetter = .GetBaseName(strContainerFile) & ":" If Not .DriveExists(strDriveLetter) Then WScript.CreateObject("WScript.Shell").Run """" & strPath2TrueCrypt & """ /letter " & strDriveLetter & " /volume """ & strContainerFile & """ /history n /cache n /mountoption removable /quit", 1, False Else WScript.CreateObject("WScript.Shell").Run """" & strPath2TrueCrypt & """ /dismount " & strDriveLetter & " /wipecache /silent /quit", 1, False End If Else WScript.Echo "Can't find [" & strPath2TrueCrypt & "]." WScript.Quit 3 End If Else WScript.Echo "Can't find TrueCrypt container file [" & strContainerFile & "]." WScript.Quit 2 End If End With Else WScript.Echo "Usage: " & WScript.ScriptName & " <TrueCrypt container file>" WScript.Quit 1 End If WScript.Quit 0 |
Отправлено: 08:33, 25-01-2015 | #3 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Большое спасибо!
Батники не пробовал, поскольку вариант с ярлыком не подходит, т.к. тома (файлы) располагаются на флешке и возможно подключение с разной буквой самой флешки. А вот в скрипте VBS обнаружилась интересная "фича". Если имя файла состоит больше чем с одной буквы - том монтируется под первой из них, жаль только при попытке отмонтирования выдает ошибку о том что том уже смонтирован. Хотел бы дополнительно попросить, чтобы такое поведение осталось, но отмонтирование происходило нормально. |
Отправлено: 16:10, 25-01-2015 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата pzh2393:
Цитата pzh2393:
Цитата pzh2393:
на: |
||||
Отправлено: 17:02, 25-01-2015 | #5 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата pzh2393:
Скрытый текст
@echo off setlocal ::Во временную переменную считываем букву диска/флэшки (например, H:), на котором лежит батник set tempvar1=%~d0 ::и вытаскиваем из неё только букву set letr=%tempvar1:~0,1% ::после чего продолжение (в которое я не вчитывался) вашего батника, set "file=w.tc" set "TrCt=C:\Program Files\TrueCrypt\TrueCrypt.exe" if exist "%letr%:" goto ds "%TrCt%" /l%letr% /v %file% /hn /cn /mrm /q exit :ds "%TrCt%" /d%letr% /q /s /w if exist "%letr%:" goto :ds exit |
|
------- Отправлено: 23:09, 25-01-2015 | #6 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Прошу не счесть за наглость, но может поможете перевести на WSH и этот пакетный скрипт?
@echo off set letr=x set "MYFILES=C:\Program Files\TrueCrypt\TrueCrypt.exe" if exist "%letr%:" goto ds "%MYFILES%" /l%letr% /a devices /hn /cn /mts /mrm /q /w /s echo start Dexpot? (y/n) set /p varl="" if %varl%==y (start /b "" "%letr%:\sOft\Dexpot\Dexpot.exe") if %varl%==n (start /b "" "%letr%:\sOft\TotalCommander\TOTALCMD.EXE %letr% %letr%") exit :ds taskkill.exe /fi "ImageName eq dexpot.exe" :rp "%MYFILES%" /d%letr% /q /s /w @echo on if exist "%letr%:" goto rp exit |
Последний раз редактировалось pzh2393, 31-01-2015 в 19:21. Отправлено: 18:30, 31-01-2015 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пробуйте (по понятным причинам — не проверялось):
Скрытый текст
Option Explicit Dim strPath2TrueCrypt Dim strDriveLetter Dim strPath2App With WScript.CreateObject("Scripting.FileSystemObject") strPath2TrueCrypt = .BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:ProgramFiles").self.Path, "TrueCrypt\TrueCrypt.exe") If .FileExists(strPath2TrueCrypt) Then strDriveLetter = Left(WScript.ScriptName, 1) & ":" If Not .DriveExists(strDriveLetter) Then WScript.CreateObject("WScript.Shell").Run """" & strPath2TrueCrypt & """ /letter " & strDriveLetter & " /auto devices /history n /cache n /mountoption removable /mountoption timestamp /quit", 1, True Select Case MsgBox("Yes: start «Dexpot»" & vbLf & "No: start «Total Commander»" & vbLf & "Cancel: nothing start", vbInformation + vbYesNoCancel, "Start application") Case vbYes strPath2App = .BuildPath(strDriveLetter, "sOft\Dexpot\Dexpot.exe") If .FileExists(strPath2App) Then WScript.CreateObject("WScript.Shell").Run """" & strPath2App & """", 1, False Else WScript.Echo "Can't find [" & strPath2App & "]." WScript.Quit 2 End If Case vbNo strPath2App = .BuildPath(strDriveLetter, "sOft\TotalCommander\TOTALCMD.EXE") If .FileExists(strPath2App) Then WScript.CreateObject("WScript.Shell").Run """" & strPath2App & """", 1, False Else WScript.Echo "Can't find [" & strPath2App & "]." WScript.Quit 2 End If Case vbCancel ' Nothing to do End Select Else WScript.CreateObject("WScript.Shell").Run """" & strPath2TrueCrypt & """ /dismount " & strDriveLetter & " /wipecache /silent /quit", 1, True End If Else WScript.Echo "Can't find [" & strPath2TrueCrypt & "]." WScript.Quit 1 End If End With WScript.Quit 0 Снятие процесса приложения виртуальных рабочих столов делать не стал. Проверку на то, что первый символ скрипта — буква, тоже не делал. |
Отправлено: 23:33, 31-01-2015 | #8 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать не пойму в чем дело, но что-то явно не так...
вместо окна TrueCrypt с предложением ввести пароль, появляется окно с сообщением о том, что пароль не подошел или том не найден. по идее, для подстановки пароля нужен ключ "/p", а мы его не используем, следовательно такого сообщения и не должны получать. |
Отправлено: 15:56, 01-02-2015 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать pzh2393, Вы меня таки вынудили пожертвовать разделом для проверки .
У меня появляется: Скрытый текст
Скрытый текст
Скрытый текст
При повторном запуске скрипта — диск отмонтируется (если, конечно, не был заблокирован каким-либо приложением). |
Отправлено: 23:26, 01-02-2015 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Отключение и подключение интернет соединения | drmodjo | Скриптовые языки администрирования Windows | 23 | 08-06-2018 14:05 | |
HDD - Горячее подключение/отключение жёстких дисков SATA (Hot plug) | BombJack | Накопители (SSD, HDD, USB Flash) | 9 | 31-10-2012 06:38 | |
Любой язык - [решено] Автоматическое подключение/отключение интернет | permas | Скриптовые языки администрирования Windows | 15 | 28-10-2011 02:14 | |
CMD/BAT - Автоматическое подключение/отключение сетевого подключения | DaFTSPiRiT | Скриптовые языки администрирования Windows | 7 | 21-08-2010 20:02 | |
Подключение/Отключение локальной сети из коммандной строки | Blast | Microsoft Windows NT/2000/2003 | 9 | 29-10-2004 09:41 |
|