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

[文件操作] 批处理如何根据txt文件内指定字符后的数字重命名文件

我现在有一大批的txt文件要修改文件名,如下:
1、文件名大部分像4KS993-006XTB7_852069.txt、884832_200885-019SUE6.txt等,
里面的内容格式都是固定的:
Customer:    XXX                                
Lot:    E910913A
Wafer ID:    852069
Die Size X,Y:    930,670
MaxXY:    154,235
Rotation:    0
Wafer Size:    150
Total Die:    27532
Passed:    22550
2、要求将“wafer ID:”后面的6个数字作为重命名后的文件名,即4KS993-006XTB7_852069.txt变为852069.txt;884832_200885-019SUE6.txt变为884832.txt。
由于我是新手,只能做到命名一个文件,不会循环,请大家多多指教。谢谢

循环的话
只给提示
for /f "tokens=*" %%i in ('dir /b *.txt') do (
这里写你重命名的语句
)
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

如果没理解错你的意思的话,代码如下:

  1. @echo off
  2. for /f "delims=" %%i in ('dir /s/b *.txt') do (
  3.         for /f "tokens=3 delims=: " %%a in ('type "%%~i" ^| find "ID"') do (
  4.                 set "foo=%%~na"
  5.         )
  6.         call,ren "%%~fi" "%%foo%%%%~xi"
  7. )
  8. pause>nul
复制代码

TOP

谢谢大家。我会试一下的。

TOP

测试代码:
  1. @echo off
  2. for %%i in (*.txt) do (
  3.         for /f "usebackq tokens=1,* delims=:" %%j in ("%%i") do (
  4.                 if /I "%%j"=="Wafer ID" (
  5.                         for %%a in (%%k) do set Nstr=%%a
  6.                         call ren "%%i" "%%Nstr%%.txt"
  7.                 )
  8.         )
  9. )
  10. echo 修改完成,按任意键退出!
  11. pause>nul
复制代码


试试代码效率有没有提高?

TOP

当然,LS的代码在实际应用过程中可以删除第三个for循环,因为第三个for循环的目的不过是为了去除字符串前后的空格

TOP

返回列表