Batch file 如何正确格式化批处理文件

Batch file 如何正确格式化批处理文件,batch-file,Batch File,我已经做了几个小时了。我终于让步了,请求帮助。我试图做的是使用批处理文件装载Truecrypt卷,然后打开Dropbox。完成这两项操作后,第二次执行批处理文件将退出Dropbox,然后卸载Truecrypt卷。除了退出Dropbox外,所有操作都正常。我不能为了我的生命,让它退出Dropbox然后卸下该卷。它直接跳过taskkill并卸载卷。我已经尝试了各种不同的方法,这些方法应该是有效的,但由于某些原因,它们不是。命令窗口显示taskkill未被识别为命令,但这显然是胡说八道=\ @echo

我已经做了几个小时了。我终于让步了,请求帮助。我试图做的是使用批处理文件装载Truecrypt卷,然后打开Dropbox。完成这两项操作后,第二次执行批处理文件将退出Dropbox,然后卸载Truecrypt卷。除了退出Dropbox外,所有操作都正常。我不能为了我的生命,让它退出Dropbox然后卸下该卷。它直接跳过taskkill并卸载卷。我已经尝试了各种不同的方法,这些方法应该是有效的,但由于某些原因,它们不是。命令窗口显示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

切勿使用Path作为您自己的变量!将Set Path=“C:\Users\DK\AppData\Roaming\Dropbox.bak”更改为类似Set-DropboxPath=“C:\Users\DK\AppData\Roaming\Dropbox.bak”

Taskkill.exe位于system32中,但只有在%Path%中列出时,windows才能找到它

小贴士:

  • 最好将
    setlocal
    作为脚本中的第二行调用,这样变量就不会从批处理文件中泄漏出来
  • 永远不要设置路径、路径、临时、tmp、windir、系统根目录、系统驱动器、操作系统、处理器或数量,除非你真的知道自己在做什么
  • 如果您不想在测试时关闭控制台窗口,请使用
    exit/B
    goto:EOF
    而不是
    exit

切勿将Path用作您自己的变量!将Set Path=“C:\Users\DK\AppData\Roaming\Dropbox.bak”更改为类似Set-DropboxPath=“C:\Users\DK\AppData\Roaming\Dropbox.bak”

Taskkill.exe位于system32中,但只有在%Path%中列出时,windows才能找到它

小贴士:

  • 最好将
    setlocal
    作为脚本中的第二行调用,这样变量就不会从批处理文件中泄漏出来
  • 永远不要设置路径、路径、临时、tmp、windir、系统根目录、系统驱动器、操作系统、处理器或数量,除非你真的知道自己在做什么
  • 如果您不想在测试时关闭控制台窗口,请使用
    exit/B
    goto:EOF
    而不是
    exit

看不到您的
taskkill
命令有任何错误。也许是一些看不见的角色?(只是胡乱猜测)。用
.exe
试试。在命令提示符下尝试。这是一个“外部”命令(一个可执行文件),所以它可能以某种方式被删除(但请不要问我为什么和如何删除)。@AndriyM taskkill本身工作正常,但当我试图将其放在Truecrypt卸载附近时就不行了。添加.exe无效。真的没有逻辑上的理由说明为什么它不应该工作。我讨厌这样的事情发生。是的,那很烦人。在令人困惑的情况下,我常常放弃试图找出问题的原因,而是专注于找到有效的解决方案。在这种情况下,我可能首先将
taskkill
命令放在一个单独的批处理脚本中,就放在这一行。如果它起作用,我会再添加一些行(比如
@ECHO OFF
,标签&
GOTO
s),然后再添加更多行,直到它慢慢变成最初应该的样子。我看不出你的
taskkill
命令有什么问题。也许是一些看不见的角色?(只是胡乱猜测)。用
.exe
试试。在命令提示符下尝试。这是一个“外部”命令(一个可执行文件),所以它可能以某种方式被删除(但请不要问我为什么和如何删除)。@AndriyM taskkill本身工作正常,但当我试图将其放在Truecrypt卸载附近时就不行了。添加.exe无效。真的没有逻辑上的理由说明为什么它不应该工作。我讨厌这样的事情发生。是的,那很烦人。在令人困惑的情况下,我常常放弃试图找出问题的原因,而是专注于找到有效的解决方案。在这种情况下,我可能首先将
taskkill
命令放在一个单独的批处理脚本中,就放在这一行。如果成功的话,我会再添加一些行(比如
@ECHO OFF
,标签&
GOTO
s),然后再添加更多行,直到它慢慢变成最初的样子。非常感谢D我在Dropbox论坛上发现了一些代码,奇怪的是,这个人的代码中没有关于退出Dropbox的内容,即使你应该在卸载文件夹所在的驱动器之前退出。所以我添加了taskkill,不知道%path%。非常感谢!:D我在Dropbox论坛上发现了一些代码,奇怪的是,这个人的代码中没有关于退出Dropbox的内容,即使你应该在卸载文件夹所在的驱动器之前退出。所以我添加了taskkill,不知道%path%。