[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 花落谁葬 于 2014-8-28 16:41 编辑

回复 10# CrLf

思路巧妙,简短的代码丰富的技巧……厉害!

TOP

本帖最后由 523066680 于 2014-8-28 17:36 编辑
  1. @echo off
  2. set str=192.168.10.255
  3. set b=%str:*.=%
  4. call echo %%str:.%b:*.=%=%%
  5. pause
复制代码
2

评分人数

    • terse: 虽有出错几率,但娱乐性更强,赞了。技术 + 1
    • CrLf: 比 6 楼更直接技术 + 1

TOP

接着玩
  1. @echo off
  2. set ip=192.168.1.1
  3. for %%a in (%ip%) do for %%b in (%%~na) do echo %%~na
  4. pause
复制代码

TOP

回复  Linuxer 分两部分解释下:
1、(set b=)
设置 %b% 为空
2、(set a=%ip:.=)&(if not defined b set  ...
CrLf 发表于 2014-8-28 16:16

这……好复杂啊,病毒的感觉。
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

TOP

回复 20# 523066680
想到可以位运算
  1. set a=192.168.1.2
  2. set /a "x=(((%a:.=)<<8|%,p=x>>24&255,q=x>>16&255"
  3. echo %p%.%q%
  4. pause
复制代码
3

评分人数

TOP

回复 21# neorobin


思路巧妙!之前也想过位运算,但以为无法兼容第一节大于 127 的 ip,忘了位运算是不分正负数的
不过有点绕了,还可以再直接点:
  1. set a=192.168.1.1
  2. set /a "a=%ip:.=,b=c,c=d,d=%"
  3. echo %a%.%b%
  4. pause
复制代码
2

评分人数

TOP

回复 22# CrLf

想不出比 b=c,c=d,d= 这样变量接力更有趣的了

还是位运算,短了点,纯属娱乐
  1. set a=192.168.1.2
  2. set /a "p=%a:.=,q=q<<8|%,q>>=16"
  3. echo %p%.%q%
  4. rem 等效的四则运算
  5. set /a "p=%a:.=,q=q*256+%,q/=65536"
  6. echo %p%.%q%
复制代码

TOP

用 /A 的话 再短点
  1. set "a=192.168.1.2"
  2. set /ab=a,p=%a:*.=%
  3. echo %b% %p%
复制代码
2

评分人数

    • plp626: bat技术娱乐, 致精致简,技术 + 1
    • CrLf: 学到了!技术 + 1

TOP

回复 24# terse


赞~
试过这种办法,但没想到提示“运算符不存在。”的时候其实已经赋值了,学习了!

TOP

各位大神好
我是来膜拜的!!!

TOP

xuexiliaoxiexie!!!

TOP

返回列表