MyBase 7.x笔记迁移到为知笔记脚本

前言

  • 因为myBase的本地相应速度快,目录树好看,所以在本地环境一直用myBase,而且近期升级到了7.0
  • 因为有跨平台共享的需求,所以需要云笔记
  • 因为为知笔记国产,界面简洁,便宜等原因,云笔记app选择为知
  • 因为现成的工具只支持myBase 5.x/6.x 的迁移,所以手动写了个脚本

原理

  • myBase 7.x采用所有笔记皆目录,再在目录下存放4种格式的文件来存放笔记,和myBase 5.x/6.x直接按笔记名保存为文件不同,因此mybase2wiz插件失效
  • 经过寻找,mybase可以导出目录树,为知笔记可以导入html/md/text,因此脚本的作用就将mybase导出结果修改为为知笔记导入后,笔记名称保持不变

步骤

  1. mybase选中所有要导出的目录,菜单栏选择导出->导出磁盘目录树->选择文件夹->确认(图后补)
  2. 设置脚本的root_path为刚才导出文件的父目录
  3. 将文后的脚本复制后保存到xxx.py(xxx自定义即可)
  4. 启动cmd命令行(需要已经安装了python)
    python xxx.py
  5. 启动为知笔记,选择要存放新笔记的目录,菜单栏->导入->(待确认)->确认
  6. 等待导入完成,检查一下是否按目录,按原笔记名称已经导入成功
  7. done

脚本源代码

# _*_ coding: utf-8 _*_

import os

root_path = 'C:/Users/Hht/Desktop/temp/processed/'


def list_dir(dir):
    if os.path.isdir(dir):
        # 递归进入子目录
        sub_dirs = os.listdir(dir)
        for sub_dir in sub_dirs:
            list_dir(dir + '/' + sub_dir)
    else:
        # 对最深层级的文件进行操作
        idx = dir.rfind('/')
        print('dir: ' + dir)
        file_name = dir[idx + 1:]
        # 保留文档结尾 到 suffix
        suffix_idx = file_name.rfind('.')
        suffix = file_name[suffix_idx:]
        print('suffix ' + suffix)

        dir_idx = dir[:idx].rfind('/')
        p_dir_name = dir[dir_idx + 1:idx]

        # 保留文件倒数第二级目录到p_dir
        p_dir = dir[:dir_idx]
        print('dir_name: ' + p_dir_name)
        print('p_dir_name: ' + dir[:idx])

        # 讲mybase文件重命名为父目录名字+原后缀
        os.rename(dir, p_dir + os.path.sep + p_dir_name + suffix)
        print('rename: ' + dir + ' to: ' + p_dir + os.path.sep + p_dir_name + suffix)
        print('----------')

# 删去已经将文件重命名了的文件夹
def remove_empty_dir(dir):
    if os.path.isdir(dir):
        sub_dirs = os.listdir(dir)
        if len(sub_dirs) < 1:
            try:
                print('crt rmdir: ' + dir)
                os.rmdir(dir)
            except BaseException as e:
                pass
        for sub_dir in sub_dirs:
            remove_empty_dir(dir + '/' + sub_dir)


list_dir(root_path)
remove_empty_dir(root_path)

后语

可能对于不写python的同学,安装python,跑脚本,比直接拷贝过去要烦人的多吧,23333

你可能感兴趣的:(MyBase 7.x笔记迁移到为知笔记脚本)