【问题标题】:Move files to folders based on first X characters of filename (vbs)根据文件名的前 X 个字符 (vbs) 将文件移动到文件夹
【发布时间】:2015-08-19 01:45:55
【问题描述】:

你好我的编码朋友。

很抱歉问这个问题,但我认为询问是否有人有这样的脚本可能会更快。

我为我所在的广播电台记录了大约 2000 多个音频 mp3 文件,我想根据记录的日志日期将它们放入文件夹中。 (是的,我现在已经修复了录音,以便从现在开始正确执行此操作,但这与我一直在做的事情有关:https://stephenmonro.wordpress.com/2015/05/22/setting-up-an-audio-logger/

我的文件是这样的:(YYYYMMDD_HH00)

logs\20150424_0300.mp3
logs\20150424_0400.mp3
logs\20150424_0500.mp3
etc.

我想要的是这样的:

\logs\8 digit date\filename with the same 8 digit date.mp3

实际

\logs\20150424\20150424_0300.mp3
\logs\20150424\20150424_0400.mp3
\logs\20150424\20150424_0500.mp3
etc.

这是我的伪代码,我已经制作了,但由于我的时间有点紧迫,而且没有时间乱猜测,我只是想知道是否有人知道如何快速完成它。

.VBS 文件是我的首选语言。

Do
  Read a filenames first 8 characters {left(8, filename)}  (the date)
  If not exist, create a folder called that first 8 characters
  Move that file into the folder name
Loop (until all files are moved to the right locations)

【问题讨论】:

  • 解决了你的问题后,如果你喜欢这个脚本,你可以试试:如何在vbscript中播放windows player中的所有歌曲?这里有两个版本,一个是在后台播放播放列表,另一个是 wmpalyer.exe 最小化! *.com/questions/29327153/…
  • 嗨@Hackoo,虽然文件是mp3,但我只需要整理它们。无论如何,谢谢。

标签: windows logging vbscript


【解决方案1】:

你的伪代码在我看来很准确。假设您的 logs 文件夹中的每个文件都是一致命名的,以下是使用 FileSystemObject 库完成它的方法:

Const LOGS_FOLDER = "c:\logs"

Dim objFSO, objFile, strDate, strSub
Set objFSO = CreateObject("Scripting.FileSystemObject")

For Each objFile In objFSO.GetFolder(LOGS_FOLDER).Files

    strDate = Left(objFile.Name, 8)
    strSub  = objFSO.BuildPath(LOGS_FOLDER, strDate)

    ' Create the folder if it doesn't already exist...
    If Not objFSO.FolderExists(strSub) Then objFSO.CreateFolder strSub

    ' Move the file into its proper folder. Use "\" to indicate dest is folder...
    objFile.Move strSub & "\"

Next

【讨论】:

  • 天才。我不是每天都有 007 帮助我。谢谢大佬,效果很好。 :)