我正在开发一款游戏,我只需要让游戏写入指定路径上的文件。
但每次尝试我都会收到错误,例如
“无法找到指定的路径”
我已尝试cd/
和路径与dir
的所有组合以及没有兔子耳朵的兔子耳朵与“\
”等等,但没有解决此错误。
但是,对此的要求也是我无法指定完整路径。因为这是一场比赛。游戏的路径因PC而异(可能),这意味着我希望它“搜索并找到”与代码中的内容相匹配的路径。继承我的代码。任何想法?
if exist cd "game\General_menus\users\%player%\programbase.dll" goto write
if not exist cd "game\General_menus\users\%player%\programbase.dll" goto addwrite
:write
echo %score%> cd "game\General_menus\users\%player%\playerdb.dll"
pause>nul
:addwrite
echo %score%>> cd "game\General_menus\users\%player%\playerdb.dll"
但完整路径为:C:\ Users \ Kevin \ Documents \ Visual Studio 2015 \ Projects \ game \ game \ General_menus \ plugins
(但正如我所说。我希望它“检测未指定的其余路径”
编辑============================================== ============================ 0
目前的工作路径= C:\ Users \ Kevin \ Documents \ Visual Studio 2015 \ Projects \ game \ Hacker_game \ General_menus \ plugins
我希望将文件playerdb.dll写入路径: C:\ Users \ Kevin \ Documents \ Visual Studio 2015 \ Projects \ game \ Hacker_game \ General_menus \ users \%player%\ playerdb.dll
无需手动将其作为路径锁定到C. (就像它将检索路径信息,这就是为什么我使用%CD%)然后只需移动1个文件夹。然后进入users \ player然后写入文件
并且它仍然不起作用:(
set path=%CD%
IF EXIST dir %path% /A:D(
goto write
)else(
goto addwrite
)
cd users\%player%\playerdb.dll goto write
if not exist cd users\%player%\playerdb.dll goto addwrite
:write
echo %score%> "Hacker_game\General_menus\users\%player%\playerdb.dll"
pause>nul
:addwrite
echo %score%>> "Hacker_game\General_menus\users\%player%\playerdb.dll"
答案 0 :(得分:0)
批处理的问题在于它可能对某些事情非常挑剔,例如路径需要是完整路径,否则你会得到错误。也许你可以尝试将你游戏中的文件放在桌面上的文件夹中?(但是如果你使用visual studio来制作这个游戏你必须改变的是视觉工作室'看起来'的文件。
虽然你能做什么,而不是试图'>'/'>>'指定路径的var得分使用if语句来检查文件是否存在。
如果是,则将var写入其中,如果不创建文件则写入。
这是我写的测试它的.bat:
@ECHO OFF
::input your game folder path
set path=C:\Users\Zachary\Desktop\testreceive.txt
::file to write to
set file=testreceive.txt
::var to write
set score=kappa
IF EXIST cd %path%(
goto :output1
)else(
goto :output2
)
:output1
echo %score% > %file%
goto:EOF
:output2
break > "d:\testing\dblank.txt"
echo %score% > %file%
goto:EOF
请记住上面的内容并不完美,我仍在学习批量自己xD,这是一个繁忙的工作,所以它有一个错误(它会打开你写的文件),但希望它会让你知道该怎么做。
编辑:
我之前赶时间,但这是一种可能的方法,可以在下载“硬编码”路径后进行“硬编码”。下载后会改变。
@ECHO OFF
::file to write to
set file=testreceive.txt
::var to write
set score=kappa
::get things started
goto :reset
:reset
cls
echo Input the full path to [file-name]
set /p path=
::hopefully put some error-checking here to see if the input matches the path
IF %path%==%pathcheck%(
goto :logic
)else(
goto :reset
)
:output1
echo %score% > %file%
goto:EOF
:output2
break>"d:\testing\dblank.txt"
echo %score% > %file%
goto:EOF
:logic
IF EXIST cd %path%(
goto :output1
)else(
goto :output2
)
这将修复文件中目录与实际目录
不同的任何可能性EDIT2 :(希望是最后一个)
经过一段时间的努力后,我在dir命令上找到了一些信息@ECHO OFF
::input your game folder path
set path=senpai
::file to write to
IF EXIST dir %path% /A:D(
goto :output1
)else(
goto :output2
)
:output1
echo yay senpai noticed me!
pause
goto:EOF
:output2
echo boo senpai didnt notice me ;-;
pause
goto:EOF
有关dir的更多信息,请访问:http://ss64.com/nt/dir.html
/ A:D部分指定你的检查是一个文件夹(至少我理解它反过来是/ A:-D(不是文件夹)
EDIT3:
尝试更改:
echo %score%>
到:
echo %score% >
还要检查并查看文件是否知道%player%中的内容。 使用方法:
echo player:%player%
pause
在文件的开头。 如果该var为空,则会导致错误。 这是我想到的最后一件会导致它无法正常工作的事情