ogr2ogr -f SQLite "merged.sqlite" "file1.dxf" -dsco SPATIALITE=YES -nln 'entities' -dialect SQLITE -sql "SELECT e.layer, e.text, e.geometry FROM entities e WHERE ST_GeometryType(e.geometry) IN ('POINT', 'POINT Z', 'LINESTRING', 'LINESTRING Z', 'MULTILINESTRING', 'MULTILINESTRING Z', 'POLYGON', 'POLYGON Z', 'MULTIPOLYGON', 'MULTIPOLYGON Z');" --config OGR_ENABLE_PARTIAL_REPROJECTION TRUE --debug ON -update -append -dim XY
Repeat this step for each file to be merged.
ogr2ogr -f DXF "mergedlabel.dxf" "merged.sqlite" -dim XY -dialect SQLITE -sql "SELECT 'LABEL(f:\"Arial\",s:1.5g,t:\"SOMETHING\")' AS OGR_STYLE, geometry FROM entities" --debug ON
ogrinfo -al merged.dxf
ogrinfo merged.sqlite -dialect SQLITE -sql "SELECT 'LABEL(f:\"Arial\",s:1.5g,t:\"'||text||'\")' AS OGR_STYLE FROM entities;"
ogr2ogr -f DXF "mergedlabel.dxf" "merged.sqlite" -dim XY -dialect SQLITE -sql "SELECT CASE WHEN ST_GeometryType(e.geometry) IN ('POINT', 'POINT Z') THEN 'pno' ELSE e.layer END AS layer, CASE WHEN ST_GeometryType(e.geometry) IN ('POINT', 'POINT Z') THEN 'LABEL(f:\"Arial\",s:2.0g,t:\"'||e.text||'\")' ELSE '' END AS OGR_STYLE, e.geometry FROM entities e" --debug ON
http://www.gdal.org/drv_dxf.html
https://trac.osgeo.org/gdal/ticket/5596
https://stackoverflow.com/questions/6134415/how-to-concatenate-strings-with-padding-in-sqlite