【发布时间】:2020-06-09 11:58:11
【问题描述】:
我正在批量制作游戏,但是当我尝试写入文件时,cmd 会崩溃。我正在写入文件以保存数据。这样用户就可以回来加载它。
创建用户代码块:
:cruser1
cls
set /a created=1
echo(
set /p name=Enter The Name of The User::
goto save
加载用户代码块:
:loaduser
cls
set /a created=0
echo(
set /p loaduser=Enter The Name of The User to Load::
if exist "%loaduser%.dll" (
< %loaduser%.dll (
set /p MHP=
set /p HP=
set /p DMG=
set /p GOLD=
set /p EXP=
set /p LVL=
set /p MEXP=
)
goto menu
)
if not exist "%loaduser%.dll" (
echo File not found.
timeout /t 3 /NOBREAK >nul
goto loaduser
)
保存数据代码块:
:save
cls
echo(
if %created% equ 1(
(
echo %MHP%
echo %HP%
echo %DMG%
echo %GOLD%
echo %EXP%
echo %LVL%
echo %MEXP%
) > %name%.dll
attrib +h "%name%.dll"
goto menu
)
if %created% equ 0(
(
echo %MHP%
echo %HP%
echo %DMG%
echo %GOLD%
echo %EXP%
echo %LVL%
echo %MEXP%
) > %loaduser%.dll
attrib +h "%loaduser%.dll"
goto menu
)
有谁知道如何解决这个问题以及为什么会这样?
编辑:我调试了它,在保存回显it worked后,在我杀死敌人后,它确实说it worked,但也说Access is denied。
希望这会有所帮助。
【问题讨论】:
-
谢谢!那行得通,但在我的代码中,我忘了提到我已经让它工作了,但它实际上并没有保存。它仍然没有保存。
-
您似乎要求最终用户输入一个名称,该名称随后用作保存已保存数据的
.dll文件的名称。如果最终用户提供了一个已经存在的名称,会发生什么?还是不能在 Windows 中用作合法文件名的名称?或包含空格或其他可能有问题的字符? -
另外,由于这已经是您今天对同一脚本的第二个问题,如果您要提供所有内容的链接,也许会更有意义,以便那些有兴趣提供帮助的人可以提供适合整个事情的解决方案,而不是执行一系列较小的、可能有冲突或效率低下的修复。此外,当您在 cmets 中收到建议(然后告诉我们您已实施)时,您需要更新问题中的代码,以便新读者知道他们看到的代码与剩余问题相关/问题。
-
我必须要问,您在尝试写入操作之前是否更改了 attrib -H?因为如果您在文件仍设置为隐藏属性的情况下尝试写入文件,则写入操作将失败并返回访问被拒绝错误
标签: batch-file cmd