为什么这些行不起作用?
echo POSITION-X: %shopxpos%>>shop%shopid%.yml
echo POSITION-Y: %shopypos%>>shop%shopid%.yml
if "%shopincludedata%" == "y" (echo DATA-VALUE: %shopitemdata%>>shop%shopid%.yml) else if "%shopincludedata%" == "Y" (echo DATA-VALUE: %shopitemdata%>>shop%shopid%.yml) else if "%shopincludedata%" == "yes" (echo DATA-VALUE: %shopitemdata%>>shop%shopid%.yml) else if "%shopincludedata%" == "YES" (echo DATA-VALUE: %shopitemdata%>>shop%shopid%.yml) else if "%shopincludedata%" == "Yes" (echo DATA-VALUE: %shopitemdata%>>shop%shopid%.yml)
他们只是不吐出文件 这是我正在使用的文件:https://www.dropbox.com/s/xui34kgkdjmee3p/ChestCommands.bat?dl=0
答案 0 :(得分:3)
问题是%shopxpos%和%shopypos%的值是单位数字,而单位数字用于标识应重定向的文件句柄。您希望将该数字视为文本字符串值为ECHOed,但解析器将该数字视为文件句柄标识符。
最简单的解决方案是将重定向移动到命令的前面。它可以出现在任何地方。
我不会检查“是”的所有变体。相反,我会检查第一个字符是否为Y
,不区分大小写。
>>shop%shopid%.yml echo POSITION-X: %shopxpos%
>>shop%shopid%.yml echo POSITION-Y: %shopypos%
if /i "%shopincludedata:~0,1%" == "y" >>shop%shopid%.yml echo DATA-VALUE: %shopitemdata%
或者更好的是,使用括号并仅重定向一次。
>>shop%shopid%.yml (
echo POSITION-X: %shopxpos%
echo POSITION-Y: %shopypos%
if /i "%shopincludedata:~0,1%" == "y" echo DATA-VALUE: %shopitemdata%
)