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

[文件操作] [已解决]根据条件生成文件?

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

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


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

问题已解决

回复 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

TOP

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

评分人数

    • czvde: 乐于助人技术 + 1

TOP

回复 3# went

代码能解释一下吗?

    Q

TOP

回复 4# netdzb


    调用powershell正则匹配数字,然后取匹配结果就好了

TOP

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

回复 3# went


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

需要结果是:
IMG_001
IMG_014

大大如何修改?

TOP

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

TOP

返回列表