variables - 将批处理变量导出到文本文件

标签 variables batch-file save export

最近有人建议我使用以下命令将变量从批处理脚本导出到文本文件

set $>savefile

并在另一次启动时使用

返回所述变量
for /f "delims=" %%a in (savefile) do set %%a

在实现中,这不是使用变量创建文件,导致脚本出错,从而关闭批处理。为了补救关闭,我创建了一个显示错误消息的检查,但仍然无法让脚本将变量导出到文件中。

变量

::Variables
set Location=Und
set Name=Und
set Gender=Und
set Age=Und
set Gold=0
set Hunger=Satisfied
set Illness=None
set Wounds=None
set CHP=10
set MHP=10
set CMP=0
set MMP=0
set DMG=(%STR%/5)+%RTWPDMG%
set DFN=0+%HeadAR%+%NeckAR%+%Shoulder%+%Chest%+%Glove%+%Leg%+%Feet%
set INT=1
set DEX=1
set STR=1
set Head=----
set Shoulder=----
set Neck=----
set Chest=Shirt
set Glove=----
set Leg=Pants
set Feet=Shoes
set LTWP=----
set RTWP=----
goto Start

保存脚本

::Save
:Save
cls
set $Location=%Location%
set $Name=%Name%
set $Gender=%Gender%
set $Age=%Age%
set $Gold=%Gold%
set $Hunger=%Hunger%
set $Illness=%Illness%
set $Wounds=%Wounds%
set $CHP=%CHP%
set $MHP=%MHP%
set $CMP=%CMP%
set $MMP=%MMP%
set $DMG=%DMG%
set $DFN=%DFN%
set $INT=%INT%
set $DEX=%DEX%
set $STR=%STR%
set $Head=%Head%
set $Shoulder=%Shoulder%
set $Neck=%Neck%
set $Chest=%Chest%
set $Glove=%Glove%
set $Leg=%Leg%
set $Feet=%Feet%
set $LTWP=%LTWP%
set $RTWP=%RTWP%
set $>%Name%_Savefile.txt
cls
echo SAVED
echo.
echo.
pause
Goto Start

加载脚本

::Select Character to Load
:LoadError
Echo INVALID NAME
echo.
echo.
echo.
echo.
goto LoadSelect1
:LoadSelect
cls
goto LoadSelect1
:LoadSelect1
set /p Name=Enter character to load:
goto Load
:Load
cls
if EXIST %Name%_Savefile.txt goto LoadSuccess
goto LoadError
:Load
for /f "delims=" %%a in %Name%_Savefile.txt do set %%a
goto Stats

我错过了什么吗?我希望所有以 $ 开头的变量都成为目标,而无需一一列出。

奖金问题: 如果我对原始变量使用 $Variable,它们是否仍然使用 %Variable% 调用?如果是这样,它会减少很多困惑。

--我意识到批处理是一种不太适合编写脚本的语言,但它是我唯一熟悉的语言。我目前正在研究lua和C++,并计划稍后通过转换批处理文件来练习这两者。

编辑:文件已创建,但仅包含第 1 行中的 $ 而没有其他内容。我假设我误解了变量导出命令的使用。

最佳答案

如果您将 %test% 作为变量,这很简单。 (但它可以是 %% 任何东西)然后你应该这样做:

echo %test%
echo %test% >nameofyourtextfile.txt

然后阅读你应该使用的:

for /f "delims=" %%x in (nameofyourtextfile.txt) do set "test=%%x"
echo %test%

works for the first line of the text file and >> sends the variable to last line. So you could use these like so:

echo %test1% > nameofyourtextfile.txt
echo %test2% >> nameofyourtextfile.txt
echo %test3% >> nameofyourtextfile.txt

要从不同的行加载,您将使用:

for /F "tokens=1,2,3" %%i in (nameofyourtextfile.txt) do call :process %%i %%j %%k
goto thenextstep
:process
set test1=%1
set test2=%2
set test3=%3

您可以像这样添加更多标记:

for /F "tokens=1,2,3,4,5" %%i in (nameofyourtextfile.txt) do call :process %%i %%j %%k
goto thenextstep
:process
set test1=%1
set test2=%2
set test3=%3
set test4=%4
set test5=%5

关于variables - 将批处理变量导出到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23008693/

相关文章:

PHP If 语句没有正确附加变量

c# - 奇怪的 C# 变量声明

javascript - 如何使用 AJAX 将 JS 变量传递给 Controller ​​?

android - 用于分割二进制文件的 Windows 命令

powershell - 如何将参数从批处理文件传递到 Powershell 脚本内的函数

javascript - 如何在 XAMPP 服务器上运行 javascript 程序并将该程序的数据保存在服务器上?

c - C中的全局变量是自动变量吗?

batch-file - 测试批处理文件中的文件属性

java - 是否可以将数据库文件保存到SD卡?

ios - 在没有内存泄漏或类似方法的情况下将许多 UIImage 保存到 NSMutableArray