Board logo

标题: [文件操作] [已解决]根据条件生成文件? [打印本页]

作者: czvde    时间: 2020-3-23 15:29     标题: [已解决]根据条件生成文件?

本帖最后由 czvde 于 2020-3-25 06:05 编辑

样例
文件夹里面的文件:
IMG_001一二.jpg
IMG_014 三四.jpg
IMG_014.jpg


批处理效果
abc.txt文本内容如下:
IMG_001
IMG_014

问题已解决
作者: netdzb    时间: 2020-3-23 19:08

回复 1# czvde

批处理我不会写,建议用python吧。给你一个参考的代码


# -*- coding:utf-8 -*-
#遍历目录树
import os,fnmatch

def all_files(root, patterns='*', single_level=False, yield_folder=False):
    # 将模式从字符串中取出放入列表中
    patterns = patterns.split(';')
    for path, subdirs, files in os.walk(root):
        if yield_folder:
            files.extend(subdirs)
        files.sort()
        for fname in files:
            for pt in patterns:
                if fnmatch.fnmatch(fname, pt):
                    yield os.path.join(path, fname)
                    break
        if single_level:
            break
# fnmatch 来检查文件名匹配模式
# os.path fnmatch os.walk 生成器
thefile=list(all_files(''E:\\projects\\test-log4j\\', '*.class;*.java;*.properties;*.xml'))
for item in thefile:
    print item
作者: went    时间: 2020-3-23 19:55

本帖最后由 went 于 2020-3-23 19:57 编辑
  1. @echo off
  2. powershell -c "dir | foreach{if($_.BaseName -match '(.*?_\d+).*'){$Matches[1]}}"
  3. pause&exit
复制代码
这种用powershell好点
作者: netdzb    时间: 2020-3-23 20:54

回复 3# went

代码能解释一下吗?

    Q
作者: went    时间: 2020-3-23 21:31

回复 4# netdzb


    调用powershell正则匹配数字,然后取匹配结果就好了
作者: czvde    时间: 2020-3-24 00:06

本帖最后由 czvde 于 2020-3-25 06:02 编辑

回复 3# went


您的bat运行结果是:
IMG_001
IMG_014
IMG_014

需要结果是:
IMG_001
IMG_014

大大如何修改?
作者: went    时间: 2020-3-24 01:17

回复 6# czvde
  1. @echo off
  2. powershell -c "dir | foreach{if($_.BaseName -match '(.*?_\d+).*'){$Matches[1]}} | Sort-Object -Unique"
  3. pause&exit
复制代码
去重就好了




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