如何解决尝试从批处理文件中查找和加载信息后收到错误
我一直在批量进行一些实验,目前正在着手一个小型文本冒险的开始,但是当我测试保存游戏时,程序返回错误“系统找不到指定的文件”。有人可以帮我吗? (如果有帮助的话,我在学校的电脑上)。
这是我有问题的代码片段:
pushd \\schoolname\MyName$\My Documents\Discount Zork
popd
< savegame.sav (
set /p timesPlayed
)
任何帮助将不胜感激。提前致谢!
解决方法
我假设您的意图是从您的 savegame.sav
文件中检索多个值,因此也许从一开始就改变您的方法会对您有所帮助。
我提供的第一个建议是始终使用相同的字符作为游戏变量的前缀。 (在下面的示例中,我选择了 {
,为了改善外观,我还在它们后缀了 }
,这是可选的)
为了确保以该字符为前缀的变量已经存在于本地环境中,不会干扰我们的游戏变量,我们首先禁用它们。
现在我们创建三个带标签的部分,用于显示所有变量及其值、将所有变量保存到文件中以及从该文件加载所有变量。
然后我们可以根据需要call
这些标签。
这里有一个不同的基本示例来展示它们的工作原理:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Rem Changing the current working directory,and pushing the previous to stack
PushD "\\schoolname\MyName$\My Documents\Discount Zork" 2> NUL || GoTo :EOF
Rem Disabling any predefined local variables beginning with {
For /F "Delims==" %%G In ('"(Set {) 2> NUL"') Do Set "%%G="
Rem Simulating first gameplay values for demonstration
Set /A {timesplayed}=3,{health}=80,{strength}=126,{defence}=76,{attack}=57
Rem showing values
Call :ShowVals
Rem saving values to file
Call :SaveVals
Rem zeroing variables for demostration
Set /A {timesplayed}={health}={strength}={defence}={attack}=0
Rem showing new values
Call :ShowVals
Rem loading saved values back into game
Call :LoadVals
Rem proving reloaded values
Call :ShowVals
Rem Returning to previous working directory from stack,and ending script
PopD
GoTo :EOF
:ShowVals
Set {
%SystemRoot%\System32\timeout.exe /T 7 1> NUL
Exit /B
:SaveVals
((Set {) 2> NUL) 1> "savegame.sav"
Exit /B
:LoadVals
For /F "UseBackQ Delims=" %%G In ("savegame.sav") Do Set "%%G"
Exit /B
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。