![如何移动名称相似的文件夹](https://linux22.com/image/1520948/%E5%A6%82%E4%BD%95%E7%A7%BB%E5%8A%A8%E5%90%8D%E7%A7%B0%E7%9B%B8%E4%BC%BC%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我想知道如何将一堆名称相似的文件夹分成不同的文件夹。例如 (01/15)妈妈 (01/15)爸爸 (02/15)爸爸 (01/15)兄弟 (03/15)儿子 所以我想要完成的是父文件夹 (01/15) - 子文件夹 (01/15)妈妈、(01/15)爸爸等等。换句话说,我想按括号中的内容分组。所以我想要的是生成一个日期文件夹来移动图片文件夹及其匹配的日期组。他们有很多文件夹,所以我无法手动完成。
答案1
听起来你可能有多个问题。你的照片有元数据吗?
你最初是如何将照片分组为妈妈、爸爸等的?暂时忘记日期。
它们是否已经按用户名分组了?还是所有文件都放在一个目录中,文件名中只标明了文件创建日期?
您可以在 Windows 中进行搜索(我认为是 Windows?)并按日期和其他元数据(如标签等)对照片进行排序 - 这些过滤器都在 Windows 搜索功能中 - 取决于图片的创建方式,您可能只需在搜索中设置一个过滤器,然后一次性移动它们。
我几乎每天都会这样处理照片,我和我的家人每天都会拍很多照片,最后总是我必须对它们进行分类和备份!
答案2
在顶层目录中创建文件 sort.vbs 并添加以下文本:
set objFSO = CreateObject("Scripting.FileSystemObject")
set objFolder = objFSO.GetFolder(".")
set colSubfolders = objFolder.Subfolders
strStartChar = "("
strEndChar = ")"
for each objSubfolder in colSubfolders
strNameOfFolder = objSubfolder.Name
if instr(strNameOfFolder, strStartChar) > 0 then
intStartCharacter = instr(strNameOfFolder,strStartChar) +1
intEndCharacter = instr(strNameOfFolder,strEndChar)
intLength = intEndCharacter - intStartCharacter
strNewFolderName = mid(strNameOfFolder, intStartCharacter, intLength )
wscript.echo "Processing: " & strNameOfFolder & ", extracted text for new folder: " & strNewFolderName
if not objFSO.FolderExists(strNewFolderName) then
objFSO.CreateFolder strNewFolderName
end if
if objFSO.FolderExists(strNewFolderName) then
set ExistingFolder = objFSO.GetFolder(strNameOfFolder)
objFSO.MoveFolder ExistingFolder.name, strNewFolderName & "\"
end if
else
wscript.echo strNameOfFolder & " not for processing. No " & strStartChar & " character in directory."
end if
next
然后在同一目录中打开命令提示符并运行:
cscript.exe sort.vbs.
如您所见,它采用 ( 和 ) 之间的字符串来形成新目录,并将原始目录的内容移动到其中。
注意:几乎没有错误检查,并且对目录名称做出了一些假设。