Board logo

标题: [文本处理] 【已解决】批处理如何删除文件名中第一个指定分隔符前的字符串? [打印本页]

作者: wzf1024    时间: 2016-3-2 14:45     标题: 【已解决】批处理如何删除文件名中第一个指定分隔符前的字符串?

本帖最后由 wzf1024 于 2016-3-6 19:58 编辑

如题,有很多txt,分隔符"."重复出现在文件名中,需要删除第一个"."前的字符串,如何实现,如:
1,693.一男性患者心动过速突然发作,心率160次/min,节律规则,心电图检查为∶QRS波群增宽,时限为0.12s,心律规则。可能的诊断是.txt
1,707.急性心肌梗死患者,疑有早期心源性休克末梢循环改变,血压12/9.3kPa(90/70mmHg),尿比重1.016,中心静脉压13cmH2O.txt
……
操作后成为:
一男性患者心动过速突然发作,心率160次/min,节律规则,心电图检查为∶QRS波群增宽,时限为0.12s,心律规则。可能的诊断是.txt
急性心肌梗死患者,疑有早期心源性休克末梢循环改变,血压12/9.3kPa(90/70mmHg),尿比重1.016,中心静脉压13cmH2O.txt

--------------
大侠帮忙!
作者: ivor    时间: 2016-3-2 15:14

回复 1# wzf1024
  1. @echo off
  2. for /f %%a in ('dir /b /a-d *.txt') do (
  3. for /f "tokens=1,* delims=." %%b in (%%a) do (
  4. echo %%c
  5. )
  6. )>new_%%a
复制代码

作者: wzf1024    时间: 2016-3-2 16:08

回复 2# ivor


   ivor大侠, 没有达到目的,文件名开头反而加上了NEW_
作者: ivor    时间: 2016-3-2 16:20

回复 3# wzf1024


    什么效果没达到
作者: wzf1024    时间: 2016-3-2 17:16

回复 4# ivor

1,707.急性心肌梗死患者,疑有早期心源性休克末梢循环改变,血压12/9.3kPa(90/70mmHg),尿比重1.016,中心静脉压13cmH2O.txt
……
操作后成为:
new_1,707.急性心肌梗死患者,疑有早期心源性休克末梢循环改变,血压12/9.3kPa(90/70mmHg),尿比重1.016,中心静脉压13cmH2O.txt
作者: bailong360    时间: 2016-3-2 17:52

  1. Ren2 -f ".*\.(.*)" "$1"
复制代码

作者: wzf1024    时间: 2016-3-2 19:17

回复 6# bailong360


    老大,这个要用那个第三方软件?
作者: ivor    时间: 2016-3-2 19:59

  1. #!/usr/bin/python3.5
  2. import os, re
  3. for txt_file in os.popen('dir /b /a-d *.txt'):
  4.     txt_file = txt_file.strip('\n')
  5.     write_file = open('new_%s' % txt_file, 'w')
  6.     with open(txt_file,'r') as file:
  7.         for line in file:
  8.             result = re.findall('\.(.*)',line)[0]
  9.             print(result,file=write_file)
复制代码

作者: gawk    时间: 2016-3-2 20:36

回复 7# wzf1024


    Ren2.exe
作者: wzf1024    时间: 2016-3-6 18:58

本帖最后由 wzf1024 于 2016-3-6 18:59 编辑

回复 9# gawk


    这个会删掉文件名,只剩下扩展名,如:
12.5s.txt
会变成:
txt
作者: wzf1024    时间: 2016-3-6 19:02

回复 8# ivor


    大大,我是菜鸟,这个怎么用?
作者: ivor    时间: 2016-3-6 19:27

本帖最后由 ivor 于 2016-3-6 19:29 编辑

回复 11# wzf1024


    安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行,
新的文本是new_开头,方便查看
作者: pcl_test    时间: 2016-3-6 19:30

改下2楼
  1. for /f "tokens=1* delims=." %%a in ('dir /b /a-d *.txt^|findstr "[^\.]\..*\.[^\.]*"') do ren "%%a.%%b" "%%b"
复制代码

作者: WHY    时间: 2016-3-6 21:02

win7 及以上系统可以试下
  1. PowerShell -c "dir *.*.txt|ren -NewName {$_.name -replace '.+?\.(.+)$', '$1'}"
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2