2010-10-11 60 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

相關問題