Copy, Move, Rename File Preserving Destination Name Case

The CopyFile() and MoveFile() WIN API functions preserve the case of the name for the destination file. Alternatively, WSH can be used.
The source and destination file names should include the directory name in both cases.

This is sample code. Add error handling and adjust to your requirements as necessary.

&& WIN API
&& Copy file
&& NOTE: the file name case will not be changed for the existing destination file.
DECLARE Long CopyFile IN WIN32API ;
	String SourceFileName, String DestFileName, Long bFailIfExists
IF CopyFile(lcFileName, lcCopyFileName, 0) = 0
  ? "Copy unsuccessful"
ENDIF
&& Move/Rename file
DECLARE Long MoveFile IN WIN32API ;
	String SourceFileName, String DestFileName
IF MoveFile(lcFileName, lcNewFileName) = 0
  ? "Move/Rename unsuccessful"
ENDIF
&& WSH
&& Copy file
&& The file name case will not be changed for existing destination file.
oFSO = CreateObject("Scripting.FileSystemObject")
llOverWrite = .T.
TRY 
	oFSO.CopyFile(lcFileName, lcCopyFileName, llOverWrite)
CATCH 
	? "Copy unsuccessful"
ENDTRY
&& Move/Rename file
oFSO = CreateObject("Scripting.FileSystemObject")
TRY 
	oFSO.MoveFile(lcFileName, lcNewFileName )
CATCH 
	? "Move/Rename unsuccessful"
ENDTRY