Как правильно отформатировать мой командный файл - PullRequest
1 голос
/ 09 ноября 2011

Я занимаюсь этим уже несколько часов.Я наконец сдаюсь и прошу помощи.Я пытаюсь использовать командный файл для монтирования тома Truecrypt, а затем открыть Dropbox.Когда обе эти вещи будут выполнены, выполнение командного файла во второй раз выйдет из Dropbox, а затем отключит том Truecrypt.Все работает правильно, кроме выхода из Dropbox.Я не могу на всю жизнь, заставить его выйти из Dropbox, а затем отключить том.Он пропускает прямо через таскл и просто отключает громкость.Я пробовал это различными способами, которые должны работать, но по некоторым причинам это не так.В командном окне написано, что taskkill не распознается как команда, но это, очевидно, бык.= \

@echo off
Set Drive=Z
Set Path="C:\Users\DK\AppData\Roaming\Dropbox.bak"
Set TrueCrypt="C:\Program Files\TrueCrypt\TrueCrypt.exe"

IF EXIST %Drive%: GoTo Dismount
GOTO Mount

:Dismount
taskkill /F /IM "dropbox.exe"
%TrueCrypt% /d %Drive% /f /w /q /s
exit

:Mount
%TrueCrypt% /v /l %Drive% %Path% /q

echo Waiting for volume...
:keepwaiting
ping -n 1 127.0.0.1 > nul
if not exist Z:\ goto keepwaiting
start "Dropbox" "C:\Users\DK\AppData\Roaming\Dropbox\bin\Dropbox.exe"
exit

1 Ответ

5 голосов
/ 09 ноября 2011

Никогда не используйте Path как свою собственную переменную!Измените Set Path="C:\Users\DK\AppData\Roaming\Dropbox.bak" на что-то вроде Set DropboxPath = "C: \ Users \ DK \ AppData \ Roaming \ Dropbox.bak"

Taskkill.exe находится в system32, но окна могут найти его, только если он указан в%Путь%.

Советы:

  • Вероятно, хорошей идеей будет назвать setlocal в качестве второй строки в вашем скрипте, чтобы ваши переменные не вытекли из пакетного файла..
  • Никогда set path, pathext, temp, tmp, windir, SystemRoot, SystemDrive, OS, PROCESSOR_ * или NUMBER_OF_ *, если вы действительно не знаете, что делаете.
  • Используйте exit /B или goto :EOF вместо exit, если вы не хотите закрывать окно консоли во время тестирования ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...