批处理程序关闭时执行一系列命令

时间:2014-12-15 23:10:44

标签: batch-file command exit

所以,我继续修改我在上一个问题Incrementing FOR loop for each line in a text file (batch)中描述的程序。

当我继续前进时,我正在尝试创建一个部分,该部分仅在程序运行时授予对文本文档的访问权限。为此,我在net use启动时授予访问权限。但是,我的困境是我不知道批处理中的任何事件处理程序可以使我的程序运行net use /delete(< =我知道语法不正确;除此之外)每当用户关闭窗口时(如在,字面上点击红色“X”)。

批处理中的哪个事件或任何命令都允许我这样做?

编辑:我发现了/wait命令的一些内容,但我不知道如何帮助我运行net use /delete命令。

2 个答案:

答案 0 :(得分:1)

而不是net use,您可以使用pushd和UNC路径来创建临时网络驱动器映射。例如:

pushd \\localhost\c$\Users\%username%\Documents

然后,无论您是popdendlocalexit /b还是用户使用红色X终止脚本,在任何情况下都会删除临时映射

只需确保setlocal位于脚本顶部,或至少在pushd之前的某个位置。一般来说,将setlocal放在@echo off之后立即置于每个脚本的顶部是一种很好的做法,除非您有特殊原因不这样做。


如果您需要进行身份验证,请使用net usepushd的组合。使用net use没有驱动器号,然后pushd \\UNC\path && net use \\computername /delete。这是一个更完整的例子:

@echo off
setlocal

set "remotePC=minastirith"
set "user=%remotePC%\adminUser"
set "pass=Password"

:: establish an authenticated session
net use \\%remotePC% /user:%user% %pass%

:: pushd and immediately terminate the net use
pushd \\%remotePC%\share && net use \\%remotePC% /delete

:: The next two commands demonstrate that even though
:: the session has been disconnected, pushd still has
:: temporary access.
cd
dir

pause

:: When you popd, endlocal, exit /b, or close the window,
:: there's no longer an authenticated session.  Another
:: attempt to pushd should result in an error.
popd
pushd \\%remotePC%\share

pause

答案 1 :(得分:0)

添加第二批。用户单击关闭按钮会有帮助(您需要为此编写一个真实的程序)。

BATCH1

Net use etc
Call Batch2
Net Use/delete etc

Batch2

Your commands

当批处理2终止时,Batch1中的其余命令将运行。您需要阅读帮助call /?