writing "\" in a batch file

Hi,

the following function writes lines for a batch file. The associated .exe is called by writing "\hysplit\exec\hyts_std", but it comes out as "\\hysplit\\exec\\hyts_std", and thus the program does not execute. How should it be written in the beginning to be saved in the proper way?

Thanks!
J-E


Function BatchFile(dt)
	variable dt
	
	String shortDateStr = Secs2Date(dt, -1)
	variable day, month, year, dayOfWeek
	sscanf shortDateStr, "%d/%d/%d (%d)", day, month, year, dayOfWeek

	Variable time = mod(dt, 24*60*60)
	variable hour=trunc(time/(60*60))
	
	string year_str=num2str(year)[2,3]
	string month_str=num2str(month)
	if (strlen(month_str)==1)
		month_str="0"+month_str
	endif
	string day_str=num2str(day)
	if (strlen(day_str)==1)
		day_str="0"+day_str
	endif
	string hour_str=num2str(hour)
	if (strlen(hour_str)==1)
		hour_str="0"+hour_str
	endif
	
	NVAR/Z trajduration=root:trajduration
	SVAR/Z PathToMetzFile=root:PathToMetFile
	SVAR/Z Trajprefix=trajprefix
	SVAR/Z Pathtotrajfolder=root:pathtotrajfolder
	
	string Batch_str
	
	Batch_str="echo "+year_str+" "+month_str+" "+day_str+" "+hour_str+"        >CONTROL;"
	Batch_str+="echo 1       >>CONTROL;"
	Batch_str+="echo 49.11 6.23 50       >>CONTROL;"
	Batch_str+="echo "+num2str(trajduration)+"       >>CONTROL;"
	Batch_str+="echo 0       >>CONTROL;"
	Batch_str+="echo 10000       >>CONTROL;"
	
	string gdasfile_list=OtherGDASFile(dt,trajduration)
	
	variable NbMetFile=itemsinlist(gdasfile_list)
	
	Batch_str+="echo "+num2str(NbMetFile)+"       >>CONTROL;"
	
	variable i
	for (i=0;i<NbMetFile;i+=1)
		Batch_str+="echo "+PathToMetzFile+"       >>CONTROL;"
		Batch_str+="echo "+stringfromlist(i,gdasfile_list)+"     >>CONTROL;"
	endfor
	Batch_str+="echo "+pathtotrajfolder+"     >>CONTROL;"
	Batch_str+="echo "+trajprefix+year_str+month_str+day_str+hour_str+ "     >>CONTROL;"
	Batch_str+=";"
	Batch_str+="\hysplit4\exec\hyts_std;"
	print Batch_str
	
	Make/T/O/N=(ItemsInList(batch_str, ";")) batch_txt
	batch_txt = StringFromList(p, batch_str, ";")
	
	Newpath/O BatchPath, "C:hysplit4:working:"
	Save/T/G/O/M="\r\n"/P=BatchPath Batch_txt as "batch_run.bat"
	
End Function
To represent a backslash in a literal string, you need two backslashes. For details, see:

DisplayHelpTopic "Escape Characters in Strings"


but it comes out as "\\hysplit\\exec\\hyts_std"


I'm not sure where you are seeing double-backslashes. Possibly you are seeing it in a literal string in the Igor debugger. In that case, a double-backslash means that there is one backslash character in the string. The debugger is simply displaying it as you would need to enter it in a command.
right, that's what I thought, but if I code
"\\hysplit4\\exec\\hyts_std;"
, then in the batch it is written "\\hysplit4\\exec\\hyts_std".
Anyway, strangely, using "/hysplit4/exec/hyts_std" works.... so I'll go for that

the other problem that I'm facing is to execute the batch file:
while executing
executeScriptText/B/Z "C:hysplit4:working:batch_run.bat" 
doesn't do anything,
executeScriptText/B/Z "C:\hysplit4\working\batch_run.bat" 
launches the batch file, but leads to incomplete calculation. (just to mention that double clicking on the batch file works properly :) )