标题: [文件操作] 批处理如何根据txt文件内指定字符后的数字重命名文件 [打印本页]
作者: bluesky_human 时间: 2009-10-4 10:59 标题: 批处理如何根据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。
由于我是新手,只能做到命名一个文件,不会循环,请大家多多指教。谢谢
作者: 基拉freedom 时间: 2009-10-4 13:45
循环的话
只给提示
for /f "tokens=*" %%i in ('dir /b *.txt') do (
这里写你重命名的语句
)
作者: asnahu 时间: 2009-10-4 13:56
如果没理解错你的意思的话,代码如下:
- @echo off
- for /f "delims=" %%i in ('dir /s/b *.txt') do (
- for /f "tokens=3 delims=: " %%a in ('type "%%~i" ^| find "ID"') do (
- set "foo=%%~na"
- )
- call,ren "%%~fi" "%%foo%%%%~xi"
- )
- pause>nul
复制代码
作者: bluesky_human 时间: 2009-10-4 18:20
谢谢大家。我会试一下的。
作者: youxi01 时间: 2009-10-4 20:02
测试代码:- @echo off
- for %%i in (*.txt) do (
- for /f "usebackq tokens=1,* delims=:" %%j in ("%%i") do (
- if /I "%%j"=="Wafer ID" (
- for %%a in (%%k) do set Nstr=%%a
- call ren "%%i" "%%Nstr%%.txt"
- )
- )
- )
- echo 修改完成,按任意键退出!
- pause>nul
复制代码
试试代码效率有没有提高?
作者: youxi01 时间: 2009-10-4 20:04
当然,LS的代码在实际应用过程中可以删除第三个for循环,因为第三个for循环的目的不过是为了去除字符串前后的空格
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |