Thanks for all of the suggestions and help. The scale normalization is very useful when doing code, however in my case the original idea of putting the minimum and maximum in code looks like the only solution at this point.
I did not find a solution for doing it at the command line.
Here is a code snippet from the working solution:
(Note that originally I was writing nodata to 0 as well, and this method breaks the nodata transformation. In my code I had to re-run the translate with nodata set to 0 as the only transformation to get it to finish the whole task!)
from qgis.core import *
from qgis.utils import *
from qgis.gui import *
from PyQt4.QtCore import *
fileInfo = QFileInfo(cur_raster)
baseName = fileInfo.baseName()
rlayer = QgsRasterLayer(cur_raster, baseName)
if not rlayer.isValid():
print "Layer failed to load!"
proj = QgsProject.instance()
infile = "C:/QGISwork/ving_script/mergetest.tif"
outfile = "C:/QGISwork/ving_script/mergetest_out.tif"
#load raster file
mlayer = loadraster(infile)
#this part gets the extent from the original file
ext = mlayer.extent()
extrep = ','.join([unicode(ext.xMinimum()), unicode(ext.xMaximum()), unicode(ext.yMinimum()), unicode(ext.yMaximum())])
#now get the stats whcih contain min and max values
renderer = mlayer.renderer()
provider = mlayer.dataProvider()
extent = mlayer.extent()
stats = provider.bandStatistics(1, QgsRasterBandStats.All,extent, 0)
#we don't need the layer any more so clear memory
#Run the algorithm with all of the inputs:
processing.runalg('gdalogr:translate', infile, 100, True, "0", 0, "", extrep , False, 5, 4, 75, 6, 1, False, 3, False, "-scale "+str(stats.minimumValue)+" "+str(stats.maximumValue)+" "+"0 1", outfile)