@cridiaz from my experience it would be best to provide the paths via a workflow variable in the batch. The path should not have any blanks or funny characters. You can call the sub-workflow directly and do not need to use the JSON communication.
A basic batch/cmd file might look like this:
REM Set the path to your KNIME executable (Windows)
set KNIME_PATH=C:\Users\%USERNAME%\software\knime_4.7.0\knime.exe
REM Set the path to your workflow directory (the workflow you want to run)
set WORKFLOW_DIR=C:\Users\%USERNAME%\knime-workspace\KNIME_Batch\KNIME_Batch_Workflow
REM Set a string variable to pass to the workflow (a variable to bed used in workflow)
REM you have to define them as workflow variable in in WF
set STRING_VAR_NAME=var_data_path
set STRING_VAR_VALUE=C:\Users\%USERNAME%\knime-workspace\KNIME_Batch\data\
REM Run KNIME in batch mode with the specified workflow, string variable, proxy settings, and save the log output
"%KNIME_PATH%" -reset -nosave -nosplash -application org.knime.product.KNIME_BATCH_APPLICATION -workflowDir="%WORKFLOW_DIR%" ^
-workflow.variable=%STRING_VAR_NAME%,%STRING_VAR_VALUE%,String
You would have to set the “var_data_path” as Workflow Variable in the workflow. That would later be replaced by the value sent thru the CMD batch file.