批处理找不到路径

时间:2016-01-19 13:34:53

标签: windows batch-file dll path

我正在开发一款游戏,我只需要让游戏写入指定路径上的文件。

但每次尝试我都会收到错误,例如

  

“无法找到指定的路径”

我已尝试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"

1 个答案:

答案 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为空,则会导致错误。 这是我想到的最后一件会导致它无法正常工作的事情