Sau đây đã được thừa nhận là đã giúp đỡ. Nó có thể được cải thiện với nhiều xử lý lỗi hơn nhưng nên thực hiện công việc hoặc được sử dụng làm điểm khởi đầu cho một kịch bản hoàn chỉnh hơn.
Ghi chú:
Tập lệnh VBScript phải nằm trong cùng thư mục với thư mục mẹ theo chế độ xem dạng cây bên dưới.
Biến strPath ở trên cùng nên được thay đổi thành tên của thư mục mẹ, tức là thay đổi từ "Bắt đầu"
Thay đổi blnDoIt từ false thành true để thực sự thay đổi.
Đề xuất chạy nó trước như sau: cscript process.vbs> log.txt
Nếu tệp nhật ký có vẻ chính xác, hãy thay đổi blnDoIt thành true.
' Given this structure:
'
'│ process.vbs
'│
'└───Start
' ├───1
' │ 123456789012aaa.txt
' │ 123456789013bbb.txt
' │
' ├───2
' │ 223456789012ccc.txt
' │ 223456789013ddd.txt
' │
' ├───3
' │ 323456789012eee.txt
' │ 323456789013fff.txt
' │
' ├───4
' │ 423456789012ggg.txt
' │ 423456789013hhh.txt
' │
' ├───5
' │ 523456789012iii.txt
' │ 523456789013jjj.txt
' │
' └───6
' 623456789013kkk.txt
' 623456789012jjj.txt
'===================================================================================
dim strPath : strPath = "Start"
dim blnDoIt : blnDoIt = false
'===================================================================================
dim objFSO : set objFSO = CreateObject("Scripting.FileSystemObject")
dim objFolder : set objFolder = objFSO.GetFolder(strPath)
dim strPGetAbsolutePathName : strPGetAbsolutePathName = objFSO.GetAbsolutePathName(strPath)
dim colSubfolders : set colSubfolders = objFolder.Subfolders
'===================================================================================
for each objSubfolder in colSubfolders
strNameOfFolder = objSubfolder.Name
wscript.echo "Processing directory: " & strNameOfFolder
strFileNameToUse = GetFileNameToUseAsParentDir (strNameOfFolder)
if strFileNameToUse <> -1 then
wscript.echo " > Chosen file to represent directory: " & strFileNameToUse
strLeft12 = left (strFileNameToUse, 12)
wscript.echo " > First 12 characters of file: " & strLeft12
if blnDoIt then
wscript.echo " > Renaming directory " & strPGetAbsolutePathName & "\" & strNameOfFolder & " to " & strPGetAbsolutePathName & "\" & strLeft12
objFSO.MoveFolder strPGetAbsolutePathName & "\" & strNameOfFolder, strPGetAbsolutePathName & "\" & strLeft12
else
wscript.echo " > Rename directory " & strPGetAbsolutePathName & "\" & strNameOfFolder & " to " & strPGetAbsolutePathName & "\" & strLeft12
end if
else
wscript.echo " > Skipping."
end if
wscript.echo ""
next
'===================================================================================
'===================================================================================
Function GetFileNameToUseAsParentDir(strDir)
dim oFiles : Set oFiles = CreateObject("System.Collections.ArrayList")
dim oF : set oF = objFSO.GetFolder(strPGetAbsolutePathName & "\" & strDir).Files
wscript.echo " > " & oF.count & " files in directory."
if oF.count > 0 then
for each oFile In oF
oFiles.Add oFile.name
next
oFiles.Sort
GetFileNameToUseAsParentDir = oFiles(0)
else
GetFileNameToUseAsParentDir = -1
end if
set oFiles = nothing
End Function
'===================================================================================