is there a way to automate render file names and avoid accidental overwrites?
The following add-on generates a unique file path from a given directory and the current timestamp. It modifies both the output path (Output Properties &gt; Output) and every base path of File Output nodes.

For instance, if the directory (Output Properties &gt; Auto-Filename &gt; Directory) is set to C:\tmp\ and the current timestamp is 2020-03-22_01_10_43_857754 then the output path is C:\tmp\2020-03-22_01_10_43_857754\#### and the base path of the File Output nodes are C:\tmp\2020-03-22_01_10_43_857754\[name of the file output node].
bl_info = {
    &quot;name&quot;: &quot;Auto-Filepath&quot;,
    &quot;author&quot;: &quot;Robert Guetzkow&quot;,
    &quot;version&quot;: (1, 0, 2),
    &quot;blender&quot;: (2, 80, 0),
    &quot;location&quot;: &quot;Output Properties &gt; Auto-filepath&quot;,
    &quot;description&quot;: &quot;Automatically sets a unique filepath for each frame based on the current timestamp.&quot;,
    &quot;warning&quot;: &quot;&quot;,
    &quot;wiki_url&quot;: &quot;&quot;,
    &quot;category&quot;: &quot;Render&quot;}

import bpy
import datetime
from pathlib import Path
from bpy.app.handlers import persistent


@persistent
def update_filepath(self):
    if not bpy.context.scene.auto_filepath_settings.use_auto_filepath:
        return
    now = datetime.datetime.now()
    path = Path(bpy.context.scene.auto_filepath_settings.directory)
    base_path = path / now.strftime('%Y-%m-%d_%H_%M_%S_%f')
    bpy.context.scene.render.filepath = str(base_path / &quot;####&quot;)
    bpy.context.scene.render.use_file_extension = True
    bpy.context.scene.render.use_overwrite = False
    if bpy.context.scene.use_nodes:
        for node in bpy.context.scene.node_tree.nodes:
            if node.type == &quot;OUTPUT_FILE&quot;:
                node.base_path = str(base_path / node.name)


def set_directory(self, value):
    path = Path(value)
    if path.is_dir():
        self[&quot;directory&quot;] = value


def get_directory(self):
    return self.get(&quot;directory&quot;, bpy.context.scene.auto_filepath_settings.bl_rna.properties[&quot;directory&quot;].default)


class AutoFilepathSettings(bpy.types.PropertyGroup):
    use_auto_filepath: bpy.props.BoolProperty(name=&quot;Automatic filepath generation.&quot;,
                                              description=&quot;Enable/disable automatic filepath generation. When enabled, &quot;
                                                          &quot;this will overwrite the output path and the base path of &quot;
                                                          &quot;all File Output nodes.&quot;,
                                              default=False)

    directory: bpy.props.StringProperty(name=&quot;Directory&quot;,
                                        description=&quot;Directory where files shall be stored.&quot;,
                                        default=&quot;/&quot;,
                                        maxlen=4096,
                                        subtype=&quot;DIR_PATH&quot;,
                                        set=set_directory,
                                        get=get_directory)


class AUTOFILEPATH_PT_panel(bpy.types.Panel):
    bl_label = &quot;Auto-Filepath&quot;
    bl_space_type = &quot;PROPERTIES&quot;
    bl_region_type = &quot;WINDOW&quot;
    bl_context = &quot;output&quot;
    bl_options = {&quot;DEFAULT_CLOSED&quot;}

    def draw_header(self, context):
        self.layout.prop(context.scene.auto_filepath_settings, &quot;use_auto_filepath&quot;, text=&quot;&quot;)

    def draw(self, context):
        layout = self.layout
        layout.prop(context.scene.auto_filepath_settings, &quot;directory&quot;)


classes = (AutoFilepathSettings, AUTOFILEPATH_PT_panel)


def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.Scene.auto_filepath_settings = bpy.props.PointerProperty(type=AutoFilepathSettings)
    if update_filepath not in bpy.app.handlers.render_pre:
        bpy.app.handlers.render_pre.append(update_filepath)


def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
    del bpy.types.Scene.auto_filepath_settings
    if update_filepath in bpy.app.handlers.render_pre:
        bpy.app.handlers.render_pre.remove(update_filepath)


if __name__ == &quot;__main__&quot;:
    register()

The add-on can also be downloaded from GitHub Gist.