我希望你们都很好。请原谅我,如果我的问题是一个总的菜鸟,但我不能谷歌解决方案。
我需要获取文件名的一部分,并将文件分别移动到特定文件夹(Category)。问题是,我将有多个具有特定格式名称的JPEG文件,并由我的老板供应商提供给我。 这些文件包含汽车备件的图片,并以下列格式命名
代码 - 名称 - 类别 - 描述
我需要获得分类,我得到的唯一线索是分割代码,名称和类别的两个破折号。代码,名称和描述的长度和内容完全是随机的。
示例:
1099 - 球形接头 - 悬架 - 本田思域的球形接头,可重复使用本田雅阁.JPEG
3275 - 空气滤清器 - 机器 - 丰田卡罗拉空气滤清器,也可用于凯美瑞.JPEG
我需要的是获取“暂停”和“机器”并将每个文件移动到各自的文件夹。我不知道如何在两次破折后分割和获取数据。
任何回应都会非常感激。谢谢。祝你有美好的一天。
答案 0 :(得分:0)
我使用相同的方法然后mehow,因为我已经计算出细节,我在这里给出:
Function entDirExists(ByVal strDir)
'
Dim fso
'
Set fso = CreateObject("Scripting.FileSystemObject")
entDirExists = fso.FolderExists(strDir)
'
Set fso = Nothing
End Function
'
' i: counter
' idxDir: index of the directory name in the split array
'
' strFilename: current Filename
' strSrcDir: source directory path
' strDstDirPrefix: destination directory path prefix
' strDstDir: destination directory for a category
'
' xarr: split array of filename
'
Function entMoveFiles(ByVal strSrcDir)
'
Dim i, idxDir
'
Dim strFilename, strDstDirPrefix, strDstDir
Dim xarr
'
idxDir = 2
'
' strSrcDir = "D:\users\tmp"
'
strDstDirPrefix = strSrcDir
'
' get the first image file:
'
strFilename = Dir(strSrcDir & "\*.jpeg", vbNormal)
'
' loop over the source directory for images:
'
i = 0
Do While (strFilename <> "")
'
' split filename:
'
xarr = Split(strFilename, "-")
'
' get the destination directory full path like prefix\catetory:
'
strDstDir = xarr(idxDir)
strDstDir = strDstDirPrefix & "\" & Trim(strDstDir)
'
' create the destination directory if nonexistent:
'
If (Not entDirExists(strDstDir)) Then
MkDir strDstDir
End If
'
' move the current file: [source path] as [destination path]
'
Name strSrcDir & "\" & strFilename As strDstDir & "\" & strFilename
'
' get next file:
'
strFilename = Dir()
i = i + 1
Loop
'
entMoveFiles = i
'
End Function
要处理目录名“D:\ myjpegs”,可以使用:
entMoveFiles "D:\myjpegs"
它将为每个类别创建子目录,例如暂停,D:\ myjpegs下的机器(如果它们尚不存在)。