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

[文本处理] 【已解决】批处理如何提取两个关键词之间的信息然后以此重命名文件名?

本帖最后由 ziranww 于 2019-2-11 13:29 编辑

非常感谢论坛里热心的朋友们,特别是@flashercs帮我几次完善了脚本,非常感谢,问题解决了
最终完善版脚本在23楼http://www.bathome.net/redirect. ... 1962&pid=217302
有类似需求的朋友可以参考一下

--------------------------------------
RT,有大量文件需要重命名,改成TXT后发现了一些规律,从其中能提取到有用的信息用于重命名文件。于是在网上查,找到了一款神奇的软件Replace Pioneer,但是研究数个小时后还是没有搞定
看了半天官网上的规则和示例,折腾了几个小时未果。于是在网上查到了论坛,求高手帮忙

需要改名的文件改成TXT打开后是这样的:
  1. 乱码
  2. abcd 乱码 name 乱码 efgh
  3. 乱码
复制代码
说明:
abcd:文件名标记信息开始
efgh:文件名标记信息结束
name:用于提取后重命名到文件名

谢谢了

用notepad++打开是这样的,红圈部分是需要提取的文件名

TOP

回复 4# flashercs


    谢谢兄弟,执行后没有成功,关了echo后看到有提示

ECHO 处于打开状态。

E:\test>set "dir=E:\test"

E:\test>powershell.exe -Command "(Select-String -Path 'E:\test\*.*' -Pattern '(?<=model_name\x00)[^\x00]+(?=\x00.*?disp_out1_info)' -Encoding default)|{Rename-Item -LiteralPath $_.Path -NewName $_.Matches[0].Value}"
所在位置 行:1 字符: 119
+ ... ng default)|{Rename-Item -LiteralPath $_.Path -NewName $_.Matches[0]. ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
只允许将表达式作为管道的第一个元素。
    + CategoryInfo          : ParserError: ( [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline

TOP

回复 6# zuodx


    这个更不会了

TOP

回复 7# flashercs


    兄弟,现在没有报错了,但是执行后没有改名

TOP

回复 9# flashercs


    还是谢谢兄弟了

TOP

非常感谢论坛里热心的网友,已上传样本文件
是creo的prt文件

通过winhex打开看到情况是这样的,我现在通过replace pineer这个软件处理了一下文件,只能通过固定数量字符窜长度实现了一部分文件的提取后重命名,但是还是不完美,发现里面有许多文件命名长度不一样,最完美的是过滤掉乱码,提取两个字符中间的内容

TOP

回复 11# 523066680


    已上传,感谢版主

TOP

回复 17# flashercs


    万分感谢兄弟 成功

TOP

回复 17# flashercs


    再贪婪的问一下,因为有些文件是不同版本,文件名是一样的,能不能实现同样文件名文件,后面加上txt.1,txt.2这样的,谢谢了

TOP

回复 20# flashercs


    谢谢大神,完美

TOP

回复 20# flashercs


    大神再问一下,我11点多执行的脚本,到现在还没有结束,大概1W多个文件,11G多点。看任务管理器,CPU还有占用的,30%不到点,硬盘读写基本上没有了,之前看是有一点的
是不是文件太多了?

TOP

回复 23# flashercs


    好像提示有点问题
Renaming file E:\test\1246.prt to ZKQ3003003.prt
Rename-Item : 无法重命名,因为“1246.prt”处不存在项。
所在位置 行:1 字符: 637
+ ... oundColor Green; Rename-Item -LiteralPath $item -NewName $newName; }}
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ( [Rename-Item],PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

TOP

回复 25# flashercs


    好的,不把文件后缀改成txt直接处理会不会有问题?

TOP

回复 27# flashercs


    你好,兄弟,用你的脚本把所有文件处理好了,现在又发现一个问题,重命名后的文件名比如是这样的:
a.prt
a.prt.1
a.prt.2
a.prt.3
.....
a.prt.250
我看了一下最大的文件到250,之前没注意,文件名应该是第一个开始就加.1,应该是这样的
a.prt.1
a.prt.2
a.prt.3
a.prt.4
.....
a.prt.251

我用原来找的几个批量命名的软件都无法实现扩展名,再求一个批量的脚本,谢谢了

TOP

返回列表