2010-10-11 62 views
0

我正在使用批处理文件来处理具有以下格式名称的文本文件:CLL * 1.txt,CLLM * 2.txt位于一个特定的“下载”文件夹。所有文件都包含以下格式的字符串: “文件参考:0xxxx”,其中xxxx是唯一的数字标识符。使用批处理文件来提取字符串的可变部分以用于重命名txt文件

我想,没有太大的成功,使用以下脚本将文件重命名为CLL * xxxx.txt(其中xxxx替换整数后缀)。任何人都可以帮忙吗?:

set target="S:\download\" 

SetLocal EnableDelayedExpansion enableextensions 

for /f "usebackq tokens=2 delims=:" %%i IN (`findstr /b "File Reference :" %target%CLL*.txt`) do ( 

    ren %target%CLL*.txt CLL*%%i.txt 

) 


Endlocal 

回答

0

findstr不会返回任何单个值给你。它只会搜索一个字符串并返回整行。试试这个VBScript中

Set objFS = CreateObject("Scripting.FileSystemObject") 
Set d = CreateObject("Scripting.Dictionary") 
strFolder= WScript.Arguments(0) 
Set objFolder = objFS.GetFolder(strFolder) 
For Each strFile In objFolder.Files 
    If objFS.GetExtensionName(strFile) = "txt" Then  
     strFileName = strFile.Name   
     Set objFile = objFS.OpenTextFile(strFile)  
     Do Until objFile.AtEndOfStream 
      strLine=objFile.ReadLine 
      If InStr(strLine,"File Reference") > 0 Then 
       s=Split(strLine,"File Reference : ") 
       num=Split(s(UBound(s))," ") 
       number=Mid(num(0),2) 'get the number 
       strNewFileName = "CLL"&CStr(number)&".txt" 
       objFile.Close    
       strFile.Name = strNewFileName 
       Exit Do 
      End If   
     Loop  
     Set objFile=Nothing 
    End If 
Next 

另存为myscript.vbs并运行它

C:\download_folder> cscript //nologo myscript.vbs c:\download_folder 
+0

感谢。使用vbscript格式化txt文件,但要根据内容使用批处理文件进行初始重命名和移动。相信使用令牌和分隔符只会传递由findstr/b提供的字符串的一部分 – 2010-10-11 14:39:02

相关问题