2014-09-25 166 views
1

我正在使用代碼保存並將遊戲進度加載到文本文件。當信息被保存時,文本中的信息正確顯示,但是當我運行遊戲時,如果文本編碼是一個句子,它只會顯示該句子的第一個單詞。例如: 這是代碼。批處理代碼在txt文件中保存批處理遊戲

(echo moves=%moves%)>> save1.txt 
(echo ttsu=%ttsu%)>> save1.txt 

這是文本文件顯示的內容。

moves=0 
ttsu=The troll sees you. 

這是加載命令。

if exist save1.txt (
for /f %%a in (save1.txt) do set %%a 
goto play 

這就是命令提示符顯示的內容。

0 
The 

我的問題是有什麼方法,使遊戲讀取完整的句子。

回答

1
if exist save1.txt (
    for /f "tokens=* delims=" %%a in (save1.txt) do set "%%a" 
    goto play 
) 

=是一個標準的分隔符(編輯這裏的分隔符是空格。=不是For /f分隔符)的批次,並自動列入爲delimiter.With delims=你排除FOR /F選項。 tokens=*將確保您獲得所有令牌(即整條線)。並且與%%a一樣,您只會獲得第一個令牌(FOR /F可能有許多令牌,與FOR命令的其他用法不同,後者如果存在則可以

@echo off 
setlocal 
:::test code 
(
    (echo(moves=0) 
    (echo(ttssu=The troll sees you) 
)>save1.txt 
:::end of test 
@if exist save1.txt @(
    for /f "usebackq tokens=* delims=" %%a in ("save1.txt") do set "%%a" 
    goto play 
) 
:play 
:::testcode 
set ttssu 
set moves 
:::endof test code 
endlocal 
+0

這並不工作,它只是關閉了批處理文件 – user3325754 2014-09-25 13:22:17

+0

並沒有錯誤消息:與%%b%%c等)

編輯增加的測試訪問?什麼是%errorlevel%? – npocmaka 2014-09-25 13:23:32

+0

@ user3325754 - 並確定您正在使用我最後一次編輯。首先,我發佈了我的錯誤答案。 – npocmaka 2014-09-25 13:24:23