找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30038|回复: 10

[文件操作] [已解决]批处理重名命文件时如何用通配符?

[复制链接]
发表于 2012-11-8 19:50:39 | 显示全部楼层 |阅读模式
本帖最后由 kay1101 于 2012-11-9 21:57 编辑

首先我有很多个文本文件,如:

[1234]word1[a345].txt

[1125]word2[ghjk].txt

[3345]word3[fhjk].txt

......

重命名成word1.txt  word2.txt  word3.txt

发现str2=!str1:
  • =!行不通,好像这种方法是可以用通配符的,但是为什么这样写不行呢?要怎么写代码才简洁点.
  • 评分

    参与人数 1PB +2 收起 理由
    Batcher + 2 感谢给帖子标题标注[已解决]字样

    查看全部评分

    发表于 2012-11-8 21:11:58 | 显示全部楼层
    本帖最后由 tmplinshi 于 2012-11-8 21:21 编辑
    1. ren2 -f "\[.*\](.*)\[.*\](\.txt)" "$1$2"
    复制代码
    ren2.exe 下载地址: http://www.lomont.org/Software/Utilities/Ren2/ren2.exe

    评分

    参与人数 1技术 +1 收起 理由
    Batcher + 1 乐于助人

    查看全部评分

     楼主| 发表于 2012-11-8 21:50:58 | 显示全部楼层
    回复 2# tmplinshi


        多谢版主回复了,但是对于很多机器都是没ren2的,怎么办,治标不治本啊...
    发表于 2012-11-8 22:24:29 | 显示全部楼层
    vbs试试?
    1. Set FSO = CreateObject("Scripting.FileSystemObject")
    2. For Each File In FSO.GetFolder(".").Files
    3.    Name = File.Name
    4.    Set Re = New RegExp
    5.    Re.Pattern = "(^\[.*\])(.*)(\[.*\])(\.txt$)"
    6.    Re.Global = False
    7.    Re.IgnoreCase = True
    8.    For Each Match in Re.Execute(Name)
    9.       File.Name = Re.Replace(Name,"$2$4")
    10.    Next
    11. Next
    复制代码

    评分

    参与人数 1技术 +1 收起 理由
    Batcher + 1 乐于助人

    查看全部评分

    发表于 2012-11-9 15:14:58 | 显示全部楼层

    1. @echo off
    2. for %%a in (*.txt) do (
    3.   echo.%%a>temp.txt
    4.   for /f "tokens=2 delims=[]" %%b in (temp.txt) do (
    5.    ren %%a %%b.txt
    6. ))
    7. del temp.txt

    复制代码

    评分

    参与人数 1技术 +1 收起 理由
    Batcher + 1 乐于助人

    查看全部评分

    发表于 2012-11-9 15:18:04 | 显示全部楼层
    为什么一定要纠结通配符,直接delims=[]取中间的值不就好了。
    文件中间的值不刚好是word1 word2 word3么。。。

    不理解。
     楼主| 发表于 2012-11-9 15:55:54 | 显示全部楼层
    本帖最后由 kay1101 于 2012-11-9 15:57 编辑

    回复 5# Bearxy


        傻了。。。多谢指教,一定要生成临时文件的?
     楼主| 发表于 2012-11-9 15:58:50 | 显示全部楼层
    回复 4# apang


        恩,可以用的
     楼主| 发表于 2012-11-9 16:03:09 | 显示全部楼层
    回复 5# Bearxy


        这样好像就不用生成临时文件了,还是多谢提醒~
    1. @echo off
    2. for %%a in (*.txt) do (
    3.   for /f "tokens=2 delims=[]" %%b in ("%%a") do (
    4.   ren %%a %%b.txt
    5. ))
    复制代码
    发表于 2012-11-9 17:31:18 | 显示全部楼层
    回复 9# kay1101

    呵呵,有时候我也一样,转进去就出不来了。哈哈
    发表于 2012-11-11 00:03:22 | 显示全部楼层
    回复 5# Bearxy


        尽量避免产生临时文件吧
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

    GMT+8, 2026-3-19 16:56 , Processed in 0.022165 second(s), 9 queries , File On.

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表