当我的程序发现自己已过时时,它将运行更新程序“data1.bat”。
在这种情况下,我发现cmd完全忽略了命令中的双引号
这是代码行(带有变量(原始)):
start "" "%dirofbatch%data1.bat" "%downloc%" "%dirofbatch%" "%lver%" "%lget%"
这是代码行(扩展了这些变量):
start "" "C:\Users\Hello\Desktop\Minecraft Client\Versions\4.7\data1.bat" "\\SERVER\Users\Test User\Minecraft Hunger Games Client v4.8" "C:\Users\Hello\Desktop\Minecraft Client\Versions\4.7" "4.7" "4.8"
似乎没有工作,而是看到了:
start "" C:\Users\Hello\Desktop\Minecraft User\Minecraft Hunger Games
我发现每次运行时,它都会在我的桌面上启动minecraft,尝试使用用户名“User\Minecraft”,密码“Hunger”登录,然后尝试登录服务器“Games” ...
是否可以在不发生这种情况的情况下将带有空格的参数传递给另一个批处理程序?
最佳答案
这是START
的错误,或者是cmd
的错误,如果命令的路径中有一个空格并且至少在一个参数中失败,则它是失败的。
添加调用的解决方法
start "" CALL "C:\Users\Hello\Desktop\Minecraft Client\Versions\4.7\data1.bat" "\\SERVER\Users\Test User\Minecraft Hunger Games Client v4.8" "C:\Users\Hello\Desktop\Minecraft Client\Versions\4.7" "4.7" "4.8"
关于windows - 批处理-将变量参数传递到包含空格的批处理文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18479856/