I use SHELL, too, but the scripts for copy and move in QB64 are fairly easy, and once in awhile I write them in a routine...
I use...
_DIREXISTS() to confirm the input destination directory exists for a move.
_FILEEXISTS() to confirm the file input exists, and to control overwrite options if the file already exists in the destination folder.
The COPY and MOVE part...
' Where myfile$ is the folder and name of the file to copy/move and myfilecopy$ is the folder and name of the file to b placed in the destination folder.
OPEN myfile$ FOR BINARY AS #1
x$ = SPACE$(LOF(1))
GET #1, , a$
CLOSE #1
OPEN myfilecopy$ FOR BINARY AS #1
PUT #1, , a$
CLOSE #1
For MOVE, just add KILL myfile$
Add more bells and whistles as needed for overwrite warnings, etc.
Pete