应该对于某些 BAT游戏制作 能提供便利的 [BAT数组]
bat吧
全部回复
仅看楼主
level 7
455175633 楼主
我记得以前用bat写了个 伪数组.
如果改进的话应该效率会提升. 以及开放效率!
主要用来处理:
循环性读写计算动态变量
对于bat游戏的实现估计能提供很多便捷性!
变量操作我记得是内存操作, 计算表过大效率就会变低,毕竟 bat 执行效率问题嘛!
只是实现了 单个数组的使用, 重新使用必须冲刷数组, 可以改进新建数组多个数组.
-------------------
这个数组的实现是利用了一个 BAT BUG实现的!
脚本A 中执行 脚本B
通过特殊处理过程后 脚本B 的变量的内存 不会因为脚本执行结束而回收内存!
后言:
希望有人能够改进这个数组!
2017年07月16日 13点07分 1
level 7
455175633 楼主
改进后的文件希望发这里!
高速bat动态数组指针不是梦!
获取百度盘 s/1eQEgUTO 提取:nscu
2017年07月16日 13点07分 3
level 14
什么意思?
2017年07月17日 03点07分 5
我是说那个bat什么意思
2017年07月17日 05点07分
回复
敖文轩321
: bat 实现的伪数组
2017年07月17日 15点07分
知道高级语言就知道<指针>一样的概念!
2017年07月17日 15点07分
回复 455175633 :那个bat怎么用?光贴个代码,我怎么知道你想表达什么!
2017年07月17日 15点07分
level 14
@echo off
setlocal enabledelayedexpansion
set XY36=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
set /a XY=21744*%2+%3
set "array="
for /l %%i in (1,1,6) do (
set /a Z36=!XY! %% 36
FOR /F "delims=" %%a in ('echo !Z36!') do (set array=!XY36:~%%a,1!!array!)
set /a XY/=36
if !XY! EQU 0 goto endfor
)
:endfor
FOR /F "delims=" %%a in ('echo !array!ZZZZZ%1') do (
endlocal
set array=%%a
)
不知道你想表达什么
找不到操作数,,,,,
2017年07月17日 05点07分 7
这个不是直接拿来执行的,是用来调用的!
2017年07月17日 15点07分
回复 455175633 :你又没说清楚.....连地址都写的这么....... %1 %2%3谁注意的到啊……
2017年07月18日 04点07分
level 7
455175633 楼主
我发的这个array.bat还有很多地方可以改进的!
使用示范:
@echo off
setlocal enabledelayedexpansion-
echo -----------------------循环赋值 数组计算赋值
for /l %%i in (1,1,6) do (
call array.bat ff 0 %%i
rem 注意这里赋值是 string 值为《1-6 300》
rem 可以去掉后面的 空格跟300
set !array!=%%i 300
)
echo -----------------------循环赋值结束
rem 读取ff[0][2]数组变量的值 并且用echo显示值
call array.bat ff 0 2
echo 值=2 300:!%array%!
echo --------------------------------------------------------
rem 计算值
rem 变量强制转换 如果储存有string的话,也会造成 运算符不存在的提示。
set /a a=!%array%!
rem 变量计算
set /a a*=80
rem 显示计算结果
echo a:!a!
rem 保存变量
set !array!=!a!
rem 计算值结束
echo ----------------------------------------------------------
call array.bat ff 0 2
echo !%array%! 打印储存计算结果。
pause
2017年07月17日 15点07分 8
level 14
你实现的功能就是根据二维数组编号计算出变量名再返回这个变量名,
而我的意思是你直接用“.”不是更快跟好?
比如set ff.0.2=2 300
另外,我上面贴的那个qsort.bat还实现了push(js)的功能,在我发布的calc standard里实现了任意维度数组的定义和储存。
2017年07月18日 01点07分 9
的确你那种方法是非常好的改进. 避免了变量名的计算速度增N倍! 之前想的太复杂了.... 直接取得传参来组合出一个变量名..
2017年07月19日 15点07分
我没win环境就不动手了,改好应该4-6行就能实现高效版本了.
2017年07月19日 16点07分
回复 455175633 :做成内嵌标签用call会快一些,外部文件相对较慢。
2017年07月19日 16点07分
回复
敖文轩321
:必须外部才能使用这个方法制作, 这个是BAT缺陷造成内存未被回收. 关键点在于 endlocal 这行 在FOR内部 ,可以说是BUG吧!
2017年07月22日 19点07分
1