在usb上从不同的驱动器运行批处理文件

时间:2015-09-23 16:08:45

标签: batch-file

我正在尝试从e:\ min.bat在USB(G:\ lock.bat)上运行批处理文件,这会在usb上创建一个文件夹锁。我的问题是文件夹已经创建但是在E驱动器而不是USB驱动器上。

min.bat

   @echo off
IF EXIST %SYSTEMROOT%\System32\TSKILL (
  TSKILL RunSanDiskSecure*
  ) ELSE (
TaskKill /IM firefox* /F
TaskKill /IM RunSanDiskSecure* /F )
    setLocal Enabledelayedexpansion

    set "myDrive="

    for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
        if not defined myDrive vol %%a: >nul 2>nul && ( 
            if exist "%%a:\RunSanDiskSecureAccess_Win.exe" set "myDrive=%%a:"
        )
    )

    if defined myDrive (
        echo drive found [%myDrive%]
    ) else (
        echo USB drive has not been found
) 

%myDrive%
pushd %~d0
Call lock.bat 
pause

    endlocal
exit

lock.bat

cls
@ECHO OFF
title IMAGES LOCKED
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST IMAGES goto MDIMAGES
ren IMAGES "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
echo Enter password to Unlock Your Secure Folder
set/p "pass=>"
if NOT %pass%== pass123 goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" IMAGES
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDIMAGES
md IMAGES
echo IMAGES created successfully
goto End
:End

我可以看到我的usb的驱动器,但是当调用它来激活lock.bat时它仍然在E:驱动器上创建文件夹而不是在USB驱动器上。

2 个答案:

答案 0 :(得分:1)

问题是,你打电话给g:\ lock.bat,但是你没有改变工作目录。

作为g:\lock.bat中的第一行,请使用cd /d g:\pushd g:\。如果您使用pushd,则可以在退出`g:\ lock.bat``

之前使用popd恢复上一个工作目录

修改以包含“注释:

将工作目录设置为(当前正在运行的)批处理文件所在的路径,使用pushd "%~dp0"(或cd /d "%~dp0")(或%~d0:\,如果更适合),所以不要如果您将文件从G:移动到另一个驱动器,则必须更改该文件。

related question

作为替代方案,您可以在调用第二个之前在调用批处理中设置新的工作目录,但是,当您使用另一个USB驱动器盘符时,您将不得不调整两行而不是驱动器号

也许您对[{3}}感兴趣。

答案 1 :(得分:0)

commsnd cd / d更改驱动器以便更改驱动器将此行放在文件顶部cd / d Drive:\ 并将驱动器一词替换为您想要制作文件夹的驱动器。