|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] подключение/отключение томов TrueCrypt |
|
||||
|
|
VBS/WSH/JS - [решено] подключение/отключение томов TrueCrypt
|
|
Пользователь Сообщения: 93 |
Прошу помощи в переводе данного скрипта 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 | |
|