I think you have a couple of options here.
Firstly run the workspace (script) in Workbench and check out the log file. The very first lines of the log window will show you what the command is to run the workspace in a bat file. So you can simply copy and paste that into a bat file.
If you need to pass parameters into the translation then you would use filename.bat [parameter value] and in the command replace the parameter values with %1, %2, etc
eg C:\apps\FME2018.1\fme.exe MyWorkspace.fme --MyParameters %1
However, another - maybe better - method is to use a WorkspaceRunner transformer. Basically you create a new FME workspace that simply has a Creator transformer to start the process, plus a WorkspaceRunner that points to the workspace to be run. You can use the dialog of the WorkspaceRunner transformer to pass parameter values.
There's a good article/demo of the technique on the Safe knowledge base.
Which method you use depends on why you are creating a bat file. If it's for scheduling a task, then that's a good solution (although FME Server if you have it has built-in scheduling tools). But if you're just wanting to start a process that calls a number of workspaces in turn, then the WorkspaceRunner is the best solution.
Another benefit of the WorkspaceRunner is that you can wait for the process to complete, and then get a result on whether it has passed or failed. So by stringing together multiple WorkspaceRunners, you can call a chain of workspaces to run, stopping at any point if an individual workspace failed.
I believe you can get feedback from a process in a bat file, to see if it failed, but that would be failed in the "crashed" sense; it wouldn't check to see if the FME process had completed successfully, but had a failure message (eg couldn't write to a DB because of the wrong password).
Best Answer
This works: http://fmepedia.safe.com/articles/How_To/Batch-Processing-Method-1-Command-Line-or-Batch-File
In the workbench set the Log File under Workspace Parameters to a User Parameter which then appears as a Published Parameter.
Make sure you set the LOG_FILE parameter in the batch to look like this:
Meant to say that you need to add the batch file modifier "~n" to your variable to expand it to include the file name of your variable. See here for more info http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
My simple batch file that I use is this:
This reads the shapefiles in c:\temp into %%F and runs the workbench for each one. The log file has the same name as the input shapefile through the use of %%~nF. Maybe change your input list to read *.shp and change your SourceDataset_SHAPE to %%D and your DestDataset_SHAPE to have %%D.
This is the contents of my report.txt:
You could do a fanout in the workbench on fme_basename after setting the reader to read all shapefiles in the source directory but not sure how you would write out separate log files for each one.