iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >批处理函数的高效另类应用(免call)
  • 289
分享到

批处理函数的高效另类应用(免call)

2024-04-02 19:04:59 289人浏览 薄情痞子
摘要

高速的真正的批处理函数应用方法!并非调用子过程我想这次应该可以把批处理编程推向一个新的台阶。 目前只支持一个参数, @echo off ::定义函数 set "d-h=setlo

高速的真正的批处理函数应用方法!并非调用子过程我想这次应该可以把批处理编程推向一个新的台阶。

目前只支持一个参数,


@echo off
::定义函数
set "d-h=setlocal enabledelayedexpansion&set/a dx=#a#&set xs=0123456789abcdef&(for /l %%z in (1,1,4) do set /a x%%z=dx%%16,dx=dx/16)&(for /f "tokens=1-4" %%1 in ("!x1! !x2! !x3! !x4!") do set hx=!xs:~%%4,1!!xs:~%%3,1!&(if !hx!==00 set hx=)&(for %%z in ("!hx!!xs:~%%2,1!!xs:~%%1,1!") do endlocal&set #a#=%%~z))"
::10进制转为16进制的函数,参数入口#a#
::要在开启变量延迟之前定义
setlocal enabledelayedexpansion
for /l %%a in (1,7,1024) do (
    set abc=%%a
    
(%d-h:#a#=abc%)
rem 函数调用

echo !abc!
)
pause

可以支持多参数了
len函数为两个参数,


@echo off

::定义函数
set "d-h=setlocal enabledelayedexpansion&set/a dx=#a#&set xs=0123456789abcdef&(for /l %%z in (1,1,4) do set /a x%%z=dx%%16,dx=dx/16)&(for /f "tokens=1-4" %%1 in ("!x1! !x2! !x3! !x4!") do set hx=!xs:~%%4,1!!xs:~%%3,1!&(if !hx!==00 set hx=)&(for %%z in ("!hx!!xs:~%%2,1!!xs:~%%1,1!") do endlocal&set #a#=%%~z))"
::10进制转为16进制的函数,调用方法:%d-h:#a#=变量名%

set "len=for /f "tokens=1-3" %%1 in ("#a#") do setlocal enabledelayedexpansion&(if defined %%2 (set /a z=8180,x=0&(for /l %%a in (1,1,14) do set/a "y=(z-x)/2+x"&(for %%b in (!y!) do if "!%%2:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)))) else (set z=0))&(for %%z in ("!z!") do endlocal&set %%1=%%~z)"
::取字符串长度函数,调用方法:%len:#a#=结果变量名 字符串变量名%
setlocal enabledelayedexpansion

for /l %%a in (1,7,1024) do (
    set abc=%%a

        (%len:#a#=slen abc%)
        (%d-h:#a#=abc%)
        (%len:#a#=dlen abc%)
        rem 函数调用
        
        echo %%a转成16进制为:!abc!   转换前字符数:!slen!  转换后字符数:!dlen!
)
pause

思路确实够新
但是因为两个原因不建议推广
代码的可阅读性降低
环境变量的过分使用也会影响效率

对于函数的效率问题
我觉得还是传统的”Goto对“来得更加简单、自由和高效

通常情况下

应该避免在组合语句(括号对中的语句)中使用函数
如果综合权衡后还是要使用
那么就需要保证组合语句的循环和递归级数满足设计要求

这种方法,对于函数的内部结构,可读性是很差,但是对于主程序的可读性却表现得非常好

看:
(%len:#a#=slen abc%)
调用用函数len,作用是,计算变量abc中字符串的长度,把结果存到变量slen中

使用函数的作用不就是为了简化主程序吗?
而对于函数,通常都是引用前人或者自己常用的功能代码,只要根据注释使用就可以了,
根本就不必去理会函数的内部做了什么。就像其它编程语言调用api和dos中断一样,难道还要去了解其内部是怎么运行的吗?

有了这种函数,就算是批处理新手,也可以轻松写出高效的批处理来,
就算是老手要写较大型的批程序时,这些可是很好的砖瓦啊。
这种函数定义只要一行就可以了,不足处是要占用一个变量名,和环境变量空间,但是这对于效率来说,这点是微小的,因为一个call :sub子过程用时相当于30层的call,及执行300次的set var=n,当然有一点,call sub.bat这种用法,要比call :sub 批处理内部子过程要快一半,但也是比用%len:#a#=var%多出来的时间,效率可想而知了。

经过这样封装的函数,是不可能会破坏主程序的结构的,4楼对len函数的使用,主程序和函数同进使用了同一个for令牌%%a却一样可以得到正确的结果。函数内部的变量使用完全是临时的,在函数结束时已经用endlocal清场,只保存返回结果。

想说些赞美的话,不好说出口。在一次创作中,突然想起netbenton这种函数的用法,于是也山寨了一个,呵呵。确实如楼主所言,发展一些高效的、正确的、常用的函数很有必要,能够充分扩展批处理的功能,使得批处理累积起更大的功能,从而实现更高的跨越式的发展。

对于重复命令调用处理的方法和技术,目前看来有几种:
1、复制粘贴,重复出现。这种模式在执行任务与命令比较少的情况下可以使用,比如使用echo产生两三行空行,总比使用for产生的划算吧?这种模式的结果是造成大量重复代码,缺乏效率。
2、使用标签,GOTO跳转。把那些反复使用的同一功能段的代码做成一个标签,然后使用goto跳转,这是最基本的模式。但goto只负责跳出去而不跳回来,要想代码自动回来则需要再跳一次。
3、使用标签,Call调用。call的好处是跳到其他标签后能够自动跳回来。之所以能够自动跳回来,因为call在原来代码后面使用了标记,可能使用了更多的内存存储来暂停原来的进程。所以,相对而言,会显得较慢一些。但Call对参数有很好的支持,使得人们对其无法割舍。
4、使用FOR命令,化繁为简。将那些符合FOR特性的命令融合到FOR当中,即可减少必要的重复操作。
5、使用函数,扩大变量。将一些命令组合赋值到某一个特定的变量中,变成通用函数,支持参数,它不需要重新建立标签,但它占据了一个变量空间。这种模式适用于所赋值的命令组合比较简短,占用空间不大的变量函数中。可以方便封装以用于不同的批处理程序中。

--结束END--

本文标题: 批处理函数的高效另类应用(免call)

本文链接: https://www.lsjlt.com/news/135747.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 批处理函数的高效另类应用(免call)
    高速的真正的批处理函数应用方法!并非调用子过程我想这次应该可以把批处理编程推向一个新的台阶。 目前只支持一个参数, @echo off ::定义函数 set "d-h=setlo...
    99+
    2024-04-02
  • 如何利用 PHP 函数高效处理数据?
    如何利用 PHP 函数高效处理数据 PHP 提供了强大的函数库,可以高效处理各种数据类型。了解这些函数将极大地简化您的代码并提高其性能。 数组处理函数 array_map():将回...
    99+
    2024-05-05
    php 数据处理
  • 利用PHP数组函数实现高效的数据处理
    PHP是一种非常强大且广泛使用的编程语言,它提供了许多有用的内置函数,特别是数组函数。通过合理地利用这些数组函数,我们可以实现高效的数据处理,提高我们的开发效率。本文将介绍一些常用的PHP数组函数,并演示如何使用它们来处理数据。一、arra...
    99+
    2023-11-20
    PHP 数据处理 数组
  • 使用PHP8中的array_chunk()函数高效处理数组分块
    PHP是一种广泛使用的脚本语言,它的主要用途是开发Web应用程序。它支持面向对象编程,能够很好地与HTML和HTTP协议结合使用,可以创建功能强大的Web应用程序。在PHP8版本中,array_chunk()函数是一个非常有用的函数。这个函...
    99+
    2023-05-18
    PHP array_chunk() 数组分块
  • Go语言如何让你高效地处理LeetCode函数响应?
    LeetCode是一个很受程序员欢迎的网站,它提供了大量的算法练习题目,让我们可以不断地提高自己的编程技能。而在解决这些题目的过程中,我们通常需要编写一些函数来处理数据,并从函数中获取响应结果。在这篇文章中,我们将介绍如何使用Go语言来高...
    99+
    2023-09-12
    响应 leetcode 函数
  • 如何使用 Python 函数实现高效的并发处理?
    Python 是一种高级语言,使用它编写的程序可以在许多领域得到应用。Python 函数的强大之处在于,它可以让我们以一种高效的方式实现并发处理。在本文中,我们将介绍如何使用 Python 函数实现高效的并发处理。 并发处理是一种实现多任务...
    99+
    2023-08-29
    函数 实时 并发
  • PHP8中的数组函数:array_intersect_key()的高效应用方法
    PHP8中的数组函数:array_intersect_key()的高效应用方法在PHP编程语言中,数组是一个非常重要的数据类型。在处理数组时,开发人员经常需要使用数组函数来完成某些特定的任务。PHP8中的新函数array_intersect...
    99+
    2023-05-18
    PHP 数组函数 array_intersect_key()
  • ASP存储响应函数:如何在处理大规模数据时保证应用程序的高效性?
    在处理大规模数据时,ASP存储响应函数是一个非常有用的工具,可以帮助我们保证应用程序的高效性。本文将介绍ASP存储响应函数的基本概念和使用方法,并通过示例代码演示如何在处理大规模数据时使用ASP存储响应函数。 什么是ASP存储响应函数? ...
    99+
    2023-06-22
    存储 响应 函数
  • 批处理下如何使用筛选器的函数
    这篇文章主要为大家展示了“批处理下如何使用筛选器的函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理下如何使用筛选器的函数”这篇文章吧。与命令重新定向管道符 (|) 联...
    99+
    2023-06-09
  • PHP8中的数组函数:array_key_first()和array_key_last()的高效应用技巧
    在PHP8中,引入了两个新的数组函数:array_key_first()和array_key_last()。这两个函数的作用是返回数组的第一个键值和最后一个键值。它们的引入,旨在优化PHP数组的性能,尤其是在大型数组上。本篇文章将介绍如何高...
    99+
    2023-05-17
    PHP 数组函数 高效应用技巧
  • PHP 函数在 XML 处理中的应用
    php 提供了一系列 xml 处理函数,包括解析 xml、遍历元素、修改元素、保存 xml 等。这些函数使开发人员能够轻松地处理 xml 数据,例如解析 rss 提要或存储自定义数据。 ...
    99+
    2024-04-15
    php xml
  • PHP 函数在 JSON 处理中的应用
    在 php 中处理 json 数据主要使用两个函数:json_encode() 用于将 php 数据编码为 json 字符串。json_decode() 用于将 json 字符串解码为 ...
    99+
    2024-04-15
    php json
  • Python、JavaScript和Path的大数据应用:如何提高数据处理效率?
    大数据已经成为了当今互联网时代的关键词之一。但是,大数据的处理是一个相当复杂且耗时的过程。为了提高大数据的处理效率,人们一直在寻找各种方法。在本文中,我们将介绍三种常见的大数据处理语言——Python、JavaScript和Path,并探...
    99+
    2023-06-14
    javascript path 大数据
  • Java容器中的NumPy函数:如何提高数据处理效率?
    随着数据处理领域的不断发展,数据量的增加和处理的复杂性也在不断提高。因此,对于数据的高效处理已经成为了一个非常重要的问题。在数据处理中,NumPy是一个非常常用的库,可以用来进行数组处理、线性代数、傅里叶变换等操作。在Java中,我们可以...
    99+
    2023-07-03
    numy 函数 容器
  • NumPy/Numpy 或 PHP 函数:哪个更适合高效的数据处理?
    数据处理是现代计算机科学中的一个重要领域。在这个领域中,有许多工具和技术可供选择。在本文中,我们将比较 NumPy/Numpy 和 PHP 函数,并探讨哪个更适合高效的数据处理。 NumPy/Numpy 是一种用于科学计算的 Python ...
    99+
    2023-09-17
    函数 numpy numy
  • 提高pandas库中常用函数的应用效率的技巧
    Pandas库是Python中用于数据处理和分析的重要工具之一。它提供了丰富的函数和方法来处理数据,但是在大规模数据集上进行操作时,我们也需要注意一些高效应用的技巧。本文将介绍一些常用函数的高效应用技巧,并给出具体的代码示例。 ...
    99+
    2024-01-24
    数据分析 数据处理 数据清洗
  • 使用Go语言开发高效的图像处理应用
    随着互联网的快速发展,图像处理变得越来越重要。无论是在社交媒体上分享照片,还是在电子商务网站上展示产品图片,人们对图像的需求日益增长。为了满足这种需求,开发高效的图像处理应用变得尤为重要。Go语言作为一种新兴的编程语言,具有简洁、高效、并发...
    99+
    2023-11-20
    图像处理 Go语言 高效
  • 如何在ASP中实现高效的Windows函数并发处理?
    ASP是一种非常流行的Web应用程序开发技术,它可以实现动态Web页面的创建、管理和处理。在ASP中,我们经常会使用一些Windows函数来实现一些高级功能,如文件操作、网络通信等等。但是在处理大量的数据时,我们需要考虑如何实现高效的Wi...
    99+
    2023-10-10
    windows 函数 并发
  • 如何在 Linux 上使用 ASP 数据类型数组进行高效的数据处理?
    在 Linux 系统中,ASP(Active Server Pages)数据类型数组是一种非常强大的工具,可以用来高效地处理大量的数据。ASP 数组可以存储多个值,并且可以通过索引访问每个值,这使得处理大量数据变得更加容易和高效。在本篇文章...
    99+
    2023-06-16
    数据类型 数组 linux
  • Apache与Java:如何高效地处理各种数据类型的数组?
    在Java编程中,数组是一种非常常见的数据结构,它可以用于存储一组相同类型的数据。然而,在处理各种数据类型的数组时,我们经常会遇到一些问题,例如如何高效地排序、查找、过滤和转换数组中的元素。在这篇文章中,我们将介绍如何使用Apache开源...
    99+
    2023-11-03
    数据类型 数组 apache
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作