Toplu iş dosyalarında bir kontrol noktası sistemi oluşturmanın bir yolu var mı? [çiftleme]
Toplu iş dosyalarında bir kontrol noktası sistemi oluşturmanın bir yolu var mı? Kendime toplu iş öğretiyorum ve metin tabanlı RPG türü bir oyun oluşturuyorum, ancak program kapatılırsa, hiçbir ilerleme kaydedilmeden kodun en başında yeniden başlar. Karmaşık uzun vadeli bir oyun yapmak istiyorum, ancak her seferinde oyunun yeniden başlatılmasıyla uğraşmak istemiyorum. İlerlemeyi kaydetmenin bir yolu var mı, böylece programı yeniden açıp yeniden başlatabilir VEYA kaldığınız yerden önceki tüm seçimler bozulmadan devam edebilirsiniz.
Yanıtlar
Muhtemelen en kolay kaydetme / yeniden yükleme yöntemi şudur:
#
Kaydetmek istediğiniz tüm değişkenlerin ilk karakteri olarak kullanılacak bir karakter (örneğin ) ayırın.
yani...
set #points=35
set action=3
set #money=22
Tüm #
değişkenleri kaydetmek için şunu kullanın:
set #>filename
hangi kurtaracak #money
ve #points
ancakaction
Yeniden yüklemek için kullanın
for /f "delims=" %%a in (filename) do set "%%a"
dosyaya kaydedilen tüm değişkenleri yeniden yükleyecektir - bunlar elbette yalnızca # değişkendir.
Magoo'nun çok verimli bir kaydetme / yükleme yöntemiyle ilgili cevabına ek olarak (küçük bir değişiklikle): kullanıcı profillerini komut dosyası oluşturma şu şekilde yapılabilir:
@Echo off
rem /* predefine your key variables prior to this loop */
:name :# load point
Set /P "name=Enter your name: "
If Not "%name%" == "" (
rem /* If character exists; load */
If Exist "%~n0_%name%.bat" (
Call "%~n0_%name%.bat"
rem /* Initialise character save using predefined variables if character new */
) Else ( Call :Save )
rem /* Force Assignment of name variable */
) Else ( Goto name )
===============================================
::: Script body
::: End of Script
Goto :Eof
===============================================
:Save :# function
rem /* variation on magoo's method of saving */
(For /F "Delims=" %%G in ('Set #')Do Echo/Set "%%G")>"%~n0_%name%.bat"
Exit /B 0