尝试从 Batch 中的文件查找和加载信息后收到错误

Receiving error after trying to find and load information from a file in Batch

我一直在做一些批处理实验,我目前正在做一个小文本冒险的开始,但是当我测试一个存档游戏时,程序返回错误“系统找不到指定的文件”有人可以帮帮我吗? (如果有任何帮助,我正在使用学校计算机)。

这是我的相关代码片段:

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