I am not sure if the following will work in DOS it is what I use in win pe from a usb drive and it has resolved the issues I had with drive letters changing around for my source. In all of my cases the destination was always drive 1 so I didn't bother using a flag file for that. In my ghost image I have a boot.txt to find the restored image drive, you won't need that since you are not using deploy anywhere and you will also need to change the folder it is looking for as you don't have the Windrivers folder on your usb but you can just as easily put a usb.txt on the root of it and then change the first variable from Windrivers to usb.txt.
Also you can drop the set os blind lines and make sure you change the ghost32 to just ghost. My .gho files are in the data folder.
rem --- finding USB drive
for %%f in (C D E F G H I J K L M N O P Q R S) do if exist %%f:\Windrivers set USB=%%f:
set path=%path%;%USB%\ghost
%USB%
cd \ghost
rem --- This will create primary OS drive configuration ---
ghost32.exe /setosdrives /blind >>%USB%\ghost\startlog.txt
rem --- Ghost Command to restore image.gho
Ghost32 -clone,mode=restore,src=%USB%\data\image.gho,dst=1 -batch -fx
rem --- Windows variable
for %%f in (C D E F G H I J K L M N O P Q R S) do if exist %%f:\Windrivers set USB=%%f:
for %%f in (C D E F G H I J K L M N O P Q R S) do if exist %%f:\boot.txt set BOOT=%%f:
rem --- DeployAnywhere command
ghdplyaw32.exe /target=%BOOT%\Windows /DDB=%USB%\WINDRIVERS
rem --- Win PE reboot command
wpeutil reboot