|
:: From https://gist.github.com/JohannesDeml/779b29128cdd7f216ab5000466404f11 |
|
:: Convert vector file formats in the current folder and their subsfolders |
|
:: The variables in the beginning can be changed to your needs |
|
:: Tested for Inkscape 1.0 - 1.3 |
|
|
|
@echo off |
|
setlocal ENABLEDELAYEDEXPANSION |
|
|
|
:: Define supported input file extensions |
|
set validInput=svg pdf eps emf wmf ps ai cdr |
|
|
|
:: Define supported output file extensions |
|
:: All supported extnesions: [.dxf, .emf, .eps, .fxg, .gpl, .hpgl, .html, .jpg, .odg, .pdf, .png, .pov, .ps, .sif, .svg, .svgz, .tar, .tex, .tiff, .webp, .wmf, .xaml, .zip] |
|
set validOutput=svg png tiff jpg webp pdf eps emf wmf ps cdr |
|
|
|
:: Define relative output folder, if you want to write to the same folder set the var to an empty string |
|
set relativeOutputFolder=out\ |
|
|
|
:: Possible paths to check for the installation |
|
set "inkscapePaths[1]=C:\Program Files\Inkscape\bin\inkscape.com" |
|
set "inkscapePaths[2]=C:\Program Files\Inkscape\bin\inkscape.exe" |
|
set "inkscapePaths[3]=C:\Program Files\Inkscape\inkscape.com" |
|
set "inkscapePaths[4]=C:\Program Files (x86)\Inkscape\bin\inkscape.com" |
|
set "inkscapePaths[5]=C:\Program Files (x86)\Inkscape\bin\inkscape.exe" |
|
set "inkscapePaths[6]=C:\Program Files (x86)\Inkscape\inkscape.com" |
|
set "inkscapePaths[7]=%UserProfile%\scoop\apps\inkscape\current\bin\inkscape.exe" |
|
|
|
set "inkscapePath=" |
|
set /a "pathIndex=1" |
|
|
|
:: Find the inkscape installation path |
|
:inkscapepath_loop_start |
|
if defined inkscapePaths[%pathIndex%] ( |
|
set "currentPath=!inkscapePaths[%pathIndex%]!" |
|
if exist "!currentPath!" ( |
|
:: found installation path |
|
set "inkscapePath=!currentPath!" |
|
goto :inkscapepath_loop_end |
|
) |
|
set /a "pathIndex+=1" |
|
goto :inkscapepath_loop_start |
|
) else ( |
|
echo Can't find Inkscape installation, aborting. |
|
goto end |
|
) |
|
:inkscapepath_loop_end |
|
|
|
:: Set the path to allow for spaces without any needed additional quotes |
|
set inkscapePath="%inkscapePath%" |
|
|
|
set validInputString= |
|
(for %%a in (%validInput%) do ( |
|
set validInputString=!validInputString!, %%a |
|
)) |
|
:: Remove the leading comma |
|
set validInputString=%validInputString:~2% |
|
|
|
set validOutputString= |
|
(for %%a in (%validOutput%) do ( |
|
set validOutputString=!validOutputString!, %%a |
|
)) |
|
:: Remove the leading comma |
|
set validOutputString=%validOutputString:~2% |
|
|
|
:: If this can't be run, then the version is an older one |
|
FOR /F "tokens=* USEBACKQ" %%g IN (`%inkscapePath% --version`) do (SET "inkscapeVersion=%%g") |
|
if "%inkscapeVersion%" EQU "" ( |
|
set inkscapeVersion=0.x |
|
set /a inkscapeMajorVersion=0 |
|
) else ( |
|
set /a inkscapeMajorVersion=%inkscapeVersion:~9,1% |
|
) |
|
|
|
echo. |
|
echo This script allows you to convert all files in this folder from one file type to another |
|
echo Running with %inkscapeVersion% from %inkscapePath% |
|
echo (type q to quit at any question) |
|
echo. |
|
|
|
set valid=0 |
|
echo Allowed file types for source: %validInputString% |
|
:whileInNotCorrect |
|
set /p sourceType=What file type do you want to use as a source? |
|
if "%sourceType%" EQU "q" exit /b |
|
for %%a in (%validInput%) do ( |
|
if "%%a"=="%sourceType%" ( |
|
set valid=1 |
|
goto inSet |
|
) |
|
) |
|
if %valid% EQU 0 ( |
|
echo Invalid input! Please use one of the following: %validInputString% |
|
goto :whileInNotCorrect |
|
) |
|
|
|
:inSet |
|
echo. |
|
|
|
set valid=0 |
|
echo Allowed file types for output: %validOutputString% |
|
:whileOutNotCorrect |
|
set /p outputType=What file type do you want to convert to? |
|
if "%outputType%" EQU "q" exit /b |
|
for %%a in (%validOutput%) do ( |
|
if "%%a"=="%outputType%" ( |
|
set valid=1 |
|
goto outSet |
|
) |
|
) |
|
if %valid% EQU 0 ( |
|
echo Invalid input! Please use one of the following: %validOutputString% |
|
goto :whileOutNotCorrect |
|
) |
|
|
|
:outSet |
|
|
|
if "%outputType%" EQU "%sourceType%" ( |
|
echo Input and Output are the same, no point in doing anything. Exiting... |
|
exit /b |
|
) |
|
|
|
echo. |
|
|
|
:: Set DPI for exported file |
|
:whileNotValidDpiNumber |
|
set /p dpi=With what dpi should it be exported (e.g. 300)? |
|
if "%dpi%" EQU "q" exit /b |
|
IF %dpi% NEQ +%dpi% ( |
|
echo Invalid input! Please input an actual number. |
|
goto :whilenotValidDpiNumber |
|
) |
|
echo. |
|
|
|
:: count how many files we need to convert before converting! |
|
set /a total=0 |
|
for /R %%i in (*.%sourceType%) do ( set /a total=total+1 ) |
|
echo Found %total% file(s) of type *.%sourceType% in the current folder (%~dp0) |
|
|
|
echo. |
|
|
|
:: Create output folder if it is set and does not exist |
|
if not "!relativeOutputFolder!"=="" ( |
|
if not exist "!relativeOutputFolder!" mkdir "!relativeOutputFolder!" |
|
) |
|
|
|
set /a count=0 |
|
:: Running through all files found with the defined ending |
|
if %inkscapeMajorVersion% NEQ 0 ( |
|
:: Inkscape 1.0 and newer |
|
for /R %%i in (*.%sourceType%) do ( |
|
set /a count=count+1 |
|
|
|
echo %%i -^> %%~di%%~pi!relativeOutputFolder!%%~ni.%outputType% ^[!count!/%total%^] |
|
%inkscapePath% --export-filename="%%~di%%~pi!relativeOutputFolder!%%~ni.%outputType%" --export-dpi=%dpi% "%%i" |
|
) |
|
) |
|
|
|
echo. |
|
echo %count% file(s) converted from %sourceType% to %outputType%! (Saved in out folder) |
|
echo. |
|
|
|
:end |
|
pause |
@knightknight
Try this: Create a folder on the desktop, name the folder A, just the letter A, and put this SVG inside that folder: https://upload.wikimedia.org/wikipedia/commons/f/fa/ABB_world_map.svg
The put the script there and run the script and let us know what happened.
From the looks of it those files do not appear to be SVG files.
Maybe someone just changed their extension. Why is the file size of all your SVG files 1KB?