我正在尝试从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
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驱动器上。
答案 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:
移动到另一个驱动器,则必须更改该文件。
作为替代方案,您可以在调用第二个之前在调用批处理中设置新的工作目录,但是,当您使用另一个USB驱动器盘符时,您将不得不调整两行而不是驱动器号
也许您对[{3}}感兴趣。
答案 1 :(得分:0)
commsnd cd / d更改驱动器以便更改驱动器将此行放在文件顶部cd / d Drive:\ 并将驱动器一词替换为您想要制作文件夹的驱动器。