My use case was to generate preview (png images) looping through a number of folders with blend files. Each preview had to have the same name 'preview.png'.
I tried all possible combinations of settings, including rendering an animation as a PNG sequence with just one frame and so on. But blender starts adding frame numbers every time it comes to images.
For rendering video formats it's enough to put an exact filename with an extension and set 'File Extensions' to False.
I ended up using a python script for rendering an image without a frame number in its filename.
This is what worked for me:
blender -b file.blend -P image_preview.py
image_preview.py, the important part here is
scene = None
if scene is None:
scene = bpy.context.screen.scene
scene.render.resolution_percentage = 100
scene.render.resolution_x = 1920
scene.render.resolution_y = 1080
scene.frame_end = scene.frame_current
scene.frame_start = scene.frame_current
scene.render.filepath = "//preview.png"
scene.render.use_overwrite = False
scene.render.use_file_extension = False
scene.render.use_placeholder = False
scene.render.image_settings.file_format = 'PNG'
bpy.ops.render.render( write_still=True )
Open python console and write
bpy.ops.render.render( write_still=True ). Which will save an image with the name and extension you provided (preview.ext).