找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: netbenton

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

[复制链接]
发表于 2012-7-30 18:15:49 | 显示全部楼层
看不懂啊,看不懂@!高手!
发表于 2013-7-5 00:24:20 | 显示全部楼层
思路很新颖,之前我真没想到可以把一个语句定义成一个变量,在这学习一下,不过我觉得封装函数对于批处理脚本来说能带来多大方便。总之先自己尝试一下写一个吧
发表于 2013-7-5 11:18:06 | 显示全部楼层
1 挺牛
2 简直是天书!
3 用了powershell就可以避免上述问题。呵呵,请叫我王婆,我最爱卖powershelllll
发表于 2013-12-2 21:25:36 | 显示全部楼层
看不懂啊,看不懂@!高手!简直是天书!
发表于 2014-4-20 15:35:12 | 显示全部楼层
好好学习!
发表于 2014-11-5 14:42:35 | 显示全部楼层
“登堂入室”,这个形容楼主真太贴切不过了。看这段代码眼睛都看花了……
发表于 2023-1-30 18:20:03 | 显示全部楼层
本帖最后由 HOPE2021 于 2023-1-30 18:39 编辑

回复 1# netbenton
您的D-H函数似乎不能很好地处理有符号的数字,而且会忽略数字的高十六位。我写了一个支持有符号数并支持直接传递参数的CHex函数,请您看看?
(P.S. 最近 VB 写多了,写出来的批处理代码又慢又长)
  1. @Echo Off & @Goto :Main

  2. :Main
  3.         @Call :LoadFunctions

  4.         SetLocal EnableExtensions EnableDelayedExpansion

  5.                 For /L %%I in (-64,1,63) Do (
  6.                         Set i=%%I
  7.                         %CHex:pReturn:lngDec=strHex:!i!%
  8.                         Echo.!i! 的十六进制形式是 !strHex!
  9.                 )

  10.         EndLocal

  11.         %CHex:pReturn:lngDec=strHex:-1%
  12.         Echo.-1 的十六进制形式是 %strHex%

  13.         %CHex:pReturn:lngDec=strHex:05347%
  14.         Echo.05347(八进制) 的十六进制形式是 %strHex%
  15. @Pause > Nul
  16. @Exit /B

  17. :LoadFunctions
  18.         Set "CHex=(For /F "Tokens=1,2 Delims=:" %%_ in ('Echo.pReturn:lngDec') Do (Set %%_=0 & SetLocal EnableExtensions EnableDelayedExpansion & Set "pRes=%%_" & Set /A lngTemp=%%`)) & Set "Hex=0123456789ABCDEF" & Set "strTemp=" & If !lngTemp!==0 ((For /F %%_ in ('Echo.!pRes!') Do (EndLocal & Set %%_=0))) Else ((For /L %%_ in (0,1,7) Do (If !lngTemp! Neq 0 (Set /A "bytTemp=lngTemp^&0x0000000F","lngTemp=(lngTemp^>^>4)^&0x0FFFFFFF" & (For /F %%` in ('Echo.!bytTemp!') Do (Set strTemp=!Hex:~%%`,1!!strTemp!))))) & (For /F "Tokens=1,2 Delims=:" %%_ in ('Echo.!pRes!:!strTemp!') Do (EndLocal & Set %%_=%%`)))"
  19. @Goto :Eof
复制代码

评分

参与人数 1PB +8 技术 +1 收起 理由
CrLf + 8 + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:26 , Processed in 0.019761 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表