微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

批处理“未找到文件”

如何解决批处理“未找到文件”

我正在批量制作安全文件夹应用程序,但遇到错误

锁定命令:

:lock
ren "Secure Folder" "Secure Folder (Locked)"
attrib +h +s "Secure Folder (Locked)"
msg * Folder locked.
goto end

解锁命令(错误所在):

:unlock
attrib -h -s "Secure Folder (Locked)"
ren "Secure Folder (Locked)" "Secure Folder"
pause
::Pause is to see the error
goto end

错误是:

File not found - Secure Folder (Locked)

文件夹是这样创建的:

:creation
md "Secure Folder"
cd Secure Folder
md Movies
md Pictures
md Music
md Bonuses
cd Bonuses
echo .LOG>Log.txt
cd %USERPROFILE%
md userpass
cd userpass
set /p userpass=Enter the password you would like to use for this application: 
echo %userpass%>userpass.txt
msg * Folder created.
goto end

这就是解锁的初始化方式:

:password
cd %USERPROFILE%\userpass
<userpass.txt set /p userpass=
set /p password=Enter password to unlock:
If /I "%password%"=="%userpass%" goto unlock
goto fail

我有一个程序用于在出现错误时解锁文件夹。该程序的代码是:

@echo off
attrib -h -s "Secure Folder (Locked)"
ren "Secure Folder (Locked)" "Secure Folder"

我不知道为什么我的主代码不起作用。可能是因为之前使用了“cd %USERPROFILE%”?

我已尝试将“解锁”代码移至代码顶部。

解决方法

您正在对子文件夹执行 cd,但永远不要返回父文件夹所在的位置。您可以改用 pushdpopd,但这是一个更好的方法:

:creation
(md "Secure Folder\Movies"
md "Secure Folder\Pictures"
md "Secure Folder\Music"
md "Secure Folder\Bonuses
echo .LOG>"Secure Folder\Bonuses\Log.txt"
md "%USERPROFILE%\userpass"
)>nul 2>&1
set /p userpass=Enter the password you would like to use for this application: 
(echo %userpass%)>"%USERPROFILE%\userpass\userpass.txt"
msg * Folder created.
goto :eof

您可以创建文件夹而无需 cd 到每个文件夹。换句话说:

mkdir "folder1\folder2\folder3"

将创建整个树,您不必先创建父项,然后再创建子项。

一个略短的版本,通过使用 for 循环来创建文件夹:

:creation
(for %%i in ("Movies" "Pictures" "Music" "Bonuses") do md "Secure Folder\%%~i"
echo .LOG>"Secure Folder\Bonuses\Log.txt"
md "%USERPROFILE%\userpass"
)>nul 2>&1
set /p "userpass=Enter the password you would like to use for this application: "
(echo %userpass%)>"%USERPROFILE%\userpass\userpass.txt"
msg * Folder created.
goto :eof

上述方法可确保您保留在原始工作 dir 内。

注意,您应该修改其余代码以适应此方法。

:password
<"%USERPROFILE%\userpass\userpass.txt" set /p userpass=
set /p password=Enter password to unlock:
If /I "%password%" == "%userpass%" goto unlock
goto fail

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。