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

[文本处理] [已解决]批处理怎样按规律截取字符串?

本帖最后由 wjrawlinson 于 2015-10-21 16:37 编辑

特殊字符串按规律截取,如下:
字符串 1.2.3.6.1.21.10.102 ,每一个字符串可能长度不一样,但是就是这种形式,每次截取 去掉最后一个数字,如下
第一次截取后为 1.2.3.6.1.21.10.
第二次截取后为 1.2.3.6.1.21.
第三次截取后为 1.2.3.6.1.

求大神指点明津,不甚感激~~~~~
1

评分人数

再用 js 练练手
  1. var w="1.2.3.6.1.21.10.102"
  2. ar=w.split('.')
  3. w.replace(/\./g,function(a){ar.pop(),WSH.Echo(ar.join('.')+'.')})
复制代码
1

评分人数

TOP

我用 bat 练练手
  1. @echo off&setlocal enabledelayedexpansion
  2. set "w=1.2.3.6.1.21.10.102"
  3. for %%a in (%w:.= %) do (
  4.   for %%b in ("!w!") do if .%%~xb neq . set w=%%~nb.&echo;!w!
  5. )
  6. pause
复制代码
2

评分人数

TOP

我用python练手
  1. w="1.2.3.6.1.21.10.102"
  2. #以.切分字符转成列表
  3. l=w.split(".")
  4. print("这是python列表:",l)
  5. p="."
  6. #保持循环
  7. while True:
  8.     if len(l)>1:
  9.         #弹出列表最后一位
  10.         l.pop()
  11.         #用.拼接转回字符串
  12.         s=p.join(l)+p
  13.         print(s)
  14.     else:
  15.         break
  16.    
  17.    
复制代码
  1. 这是python列表: ['1', '2', '3', '6', '1', '21', '10', '102']
  2. 1.2.3.6.1.21.10.
  3. 1.2.3.6.1.21.
  4. 1.2.3.6.1.
  5. 1.2.3.6.
  6. 1.2.3.
  7. 1.2.
  8. 1.
复制代码
1

评分人数

TOP

回复 7# wjrawlinson

新人须知,本版规则
1、求助时,务必在顶楼一次性把问题交代清楚,建议给出完整有针对性的样本或图示,样本过大可发网盘分享链接。勿发无意义的标题
2、使用 code 标记把代码部分括起来(单击回复框的 <> 按钮,复制粘贴代码进去),以便复制。问题解决后,请编辑顶楼帖子在标题前面注明[已解决]http://www.bathome.net/thread-3473-1-1.html
3、提问前先使用论坛搜索,勿发同类贴、重复贴

TOP

不好意思,我已经重新发了,多多包含,以后我会注意的。

TOP

回复 5# wjrawlinson
兄弟你的标题太随意了!

TOP

回复 4# pcl_test


    好的

TOP

本帖最后由 pcl_test 于 2015-10-20 22:25 编辑

回复 3# wjrawlinson
2楼已改
请按版规发帖,重新修改顶楼的标题,勿发无意义的标题

TOP

回复 2# pcl_test
非常感谢你的帮助,我运行了你提供的脚本结果如下:
1.2.3.6.1.21.10
1.2.3.6.1.21
1.2.3.6.1
1.2.3.6
1.2.3
1.2
1
而我想要的结果是
1.2.3.6.1.21.10.
1.2.3.6.1.21.
1.2.3.6.1.
1.2.3.6.
1.2.3.
1.2.
1.

TOP

本帖最后由 pcl_test 于 2015-10-20 22:24 编辑

勿发无意义的标题
  1. @echo off
  2. set str=1.2.3.6.1.21.10.102
  3. :0
  4. for %%a in (%str%) do (
  5.     echo;%%~na.
  6.     set str=%%~na
  7. )
  8. echo;%str%|find ".">nul&&goto :0
  9. pause
复制代码
2

评分人数

TOP

返回列表