好的,我有批处理文件,只是一个隐藏和取消隐藏文件夹的简单文件。
我不明白为什么它似乎无法执行;
以下是扩展示例代码:
@echo off
color a
title Folder/Drive hider Service
:jiki
echo Loading...
TIMEOUT /T 2 >nul
goto inputs
:inputs
echo Enabling security...
TIMEOUT /T 2 >nul
cls
goto menu
:menu
if EXIST "%~dp0\Encryption" (set status=Folder is locked.)
if EXIST "%~dp0\Logan_Documents" (set status=Folder is unlocked, to open it, enter open as your `action.)`
cls
echo.
echo STATUS: %status%
echo.
echo ----------------------------------------
echo FOLDER PROTECTOR by Logan
echo ----------------------------------------
echo.
echo Lock = Lock the folder(s)
echo Unlock = Unlock the folder(s)
echo Credits = For more info
echo V = Display your current version
echo Exit = Close the program
echo.
echo ----------------------------------------
echo For more info, just ask Logan!
echo ----------------------------------------
echo.
echo Select your action, %USERNAME%.
echo.
set /p "menu=>"
if /I %menu%== lock goto lock
if /I %menu%== unlock goto unlock
if /I %menu%== credits goto credits
if /I %menu%== v goto version
if /I %menu%== exit goto exit
goto invalid
还有更多,每次我去执行脚本时,它只是将状态变量留空。
这是我尝试过的。
if exist
进行排序。不起作用,只留下空白状态。感谢所有努力解决我的问题,让这个程序正常运作! -Logan
答案 0 :(得分:2)
if exist
应该与您使用它完全一样正常工作。您并不严格需要引号,因为名称不包含空格。此外,您不需要括号,因为它是一个命令。
但话说回来,它也应该与它们一起工作(我实际测试了这个),所以我唯一能想到的是找不到文件或文件夹,因为脚本在错误的目录中运行。毕竟你只使用没有任何路径的名称,所以当前目录应包含这些文件。
“当前目录”不一定是保存脚本的目录。如果您在'C:\ Foo'并且调用'C:\ Bar \ Script.bat',则当前目录仍为'C:\ Foo'。通过快捷方式启动脚本也是如此。
要尝试此操作,您可以在脚本中使用echo %CD%
来回显当前目录。
作为一种可能的解决方案,您可以使用%~dp0
来使用保存批处理脚本的实际目录,因此您始终有一个起点:
REM Check if 'Encryption' exists in the same folder as the batch file.
if EXIST "%~dp0\Encryption" (set status=Folder is locked.)
答案 1 :(得分:0)
可能两个if
都不是真的,可能是因为活动目录不是你想象的那样。您可以通过在set status=none
上方插入if
来轻松测试。或插入dir
以查看此时的抄写员实际看到的内容。