diff --git a/devTools/concatFiles.bat b/devTools/concatFiles.bat index 3da9527a846693b3f9a9c87fea44c70c5b48e6f4..0d4cc2e819a5c2f48363983a41d554ffc6bac05c 100644 --- a/devTools/concatFiles.bat +++ b/devTools/concatFiles.bat @@ -1,15 +1,29 @@ @echo off :: Concatenates files from dir %1 specified with wildcard %2 and outputs result to %3 +:: temporary codepage change to avoid mojibake +FOR /f "tokens=2 delims=:." %%x IN ('CHCP') DO SET _CP=%%x +CHCP 65001 > NUL + :: TODO Proper temp file instead of bin\list.txt IF EXIST %3 DEL %3 SET _LISTFILE="bin\list.txt" ->%_LISTFILE% (FOR /R "%~1" %%F IN (%2) DO echo "%%F") -sort /O %_LISTFILE% %_LISTFILE% -(FOR /F "usebackq delims=" %%F IN (`type "%_LISTFILE%"`) DO ( + +:: Collect sorted list of files +ECHO "Ignore the first line to skip the BOM" >%_LISTFILE% +(FOR /R "%~1" %%F IN (%2) DO echo "%%F") | sort >>%_LISTFILE% + +:: If we have powershell available, strip the absolute path information +:: If not, fail silently (which is fine, but will leak path information into the built file) +powershell -command "" 2> NUL +IF %ERRORLEVEL% EQU 0 powershell -command "(get-content -path %_LISTFILE% -raw -encoding utf8) -replace [regex]::escape('%CD%'),'' -replace '\"','' ^| set-content -encoding utf8 -path %_LISTFILE%" + +:: Append the files +(FOR /F "skip=1 usebackq delims=" %%F IN (`type "%_LISTFILE%"`) DO ( echo /* %%F */ >> %3 - copy /b %3+%%F %3 1>NUL + copy /b %3+"%CD%%%F" %3 1>NUL ) ) DEL %_LISTFILE% +CHCP %_CP% > NUL \ No newline at end of file