微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何遍历文件夹并将所有文件的名称添加到 Libreoffice 列中的单元格中?使用 .csv 和 Anki

如何解决如何遍历文件夹并将所有文件的名称添加到 Libreoffice 列中的单元格中?使用 .csv 和 Anki

我有几个文件夹,每个文件夹都包含数千个 .mp3 文件,其中包含母语人士所说的例句。我想按顺序遍历文件夹并将文件的所有名称添加到 LibreOffice 电子表格的第一列,因此在列中的每个单元格中,它看起来像 [sound:name_of_file.mp3]。文件名是按顺序排列的,但它们按部分和章节分开,所以如果有办法获取文件名并使用它会更容易,而不是想出一个改变的函数基于 for 循环或类似内容的文本。

我想创建一个包含所有 [sound:name_of_file.mp3] 文本的 .csv 文件,我将把它作为一个甲板上传到 Anki,然后将每个原始文件夹中的所有 .mp3 文件复制到 Anki 的media 文件夹,以便卡引用音频并播放它。

有没有办法做到这一点,如果有,怎么做?

谢谢!

解决方法

如果您不想使用系统命令来读取文件夹内容,如问题的评论中所述,那么以下脚本将帮助您完成这项工作:

Sub createFileList
Dim oFolderDialog As Object,oUcb As Object 
Dim sStartFolder As String 
Dim aList As Variant,aRes As Variant 
Dim nRow As Long,i As Long 
Dim sFullName As String,sFile As String
    Globalscope.BasicLibraries.LoadLibrary("Tools")
    sStartFolder = ""
    oFolderDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
    oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
    If oUcb.Exists(GetPathSettings("Work")) Then _
        oFolderDialog.SetDisplayDirectory(GetPathSettings("Work"))
    If oFolderDialog.Execute() = 1 Then
        sStartFolder = oFolderDialog.GetDirectory()
        If oUcb.Exists(sStartFolder) Then sStartFolder = ConvertFromUrl(sStartFolder)
    End If
    If sStartFolder = "" Then Exit Sub
    aList = ReadDirectories(sStartFolder,False,"mp3")
    nRow = UBound(aList)
    If nRow < 0 Then Exit Sub
    ReDim aRes(nRow)
    For i = LBound(aList) To UBound(aList)
        sFullName = ConvertFromURL(aList(i,0))
        sFile = FileNameOutOfPath(sFullName,GetPathSeparator())
        aRes(i) = "[sound:" & sFile & "]"
    Next i
    sFile = sStartFolder & GetPathSeparator() & "filelist.csv"
    sFile = InputBox("Specify the path and name for the output file:","Found " & (nRow + 1) & " files.",sFile)
    If sFile = "" Then Exit Sub
    SaveDataToFile(ConvertToURL(sFile),aRes)
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。