Copying, Moving, Deleting and Renaming Files

- alexbarfoot alexbarfoot

Copying a file

Below the method by which a file can be copied using API calls is shown:
calldll #kernel32, "CopyFileA",_
currentfilename$ as ptr,_ 'the string containing the file to be copied
copyfilename$ as ptr,_ 'the string containing the file name of the copied file
bFailIfExists as long,_ '1 or 0
re as long 'not 0 if copy was successful
The currentfilename$ is the string that contains the name of the file you want to make a copy of. The copyfilename$ is the file name for the copy. The bFailIfExists tells the computer what to do if the file name for the copy is already used. If set to 0 the copy will overwrite the current file with the same name. If set to 1 the copy does not overwrite the file. The code below shows how to copy a file into a different folder with the same file name:
let currentfilename$= "c:\text.txt"
let copyfilename$= "c:\folder\text.txt"
let bFailIfExists= 0
calldll #kernel32, "CopyFileA",_
currentfilename$ as ptr,_
copyfilename$ as ptr,_
bFailIfExists as long,_ '1 or 0
re as long
if re=0 then print "copyfailed"
The code below shows how to make a copy of a file into the same folder with a different filename:

let currentfilename$= "c:\text.txt"
let copyfilename$= "c:\copyoftext.txt"
let bFailIfExists= 0
calldll #kernel32, "CopyFileA",_
currentfilename$ as ptr,_
copyfilename$ as ptr,_
bFailIfExists as long,_
re as long
if re=0 then print "copyfailed"

Remember to include the complete path in the filename.

Moving a file

There are two ways to move a file; using the name command and using API calls.
Below the method by which a file can be moved using API calls is shown:
calldll #kernel32, "MoveFileA",_
currentfilename$ as ptr,_ 'the string containing the file to be copied
movefilename$ as ptr,_ 'the string containing the file name of the file in its new location
re as long 'not 0 if move was successful
 
The currentfilename$ is the string that contains the name of the file you want to move. The movefilename$ is the file name for the new location of the file. If the function succeeds, the return value is nonzero. If the function fails, the return value is zero.Points to a null-terminated string that specifies the new name of a file or directory. The new name must not already exist. A new file may be on a different file system or drive. The code below shows how to move a file and keep the same file name.
let currentfilename$= "c:\text.txt"
let movefilename$= "c:\folder\text.txt"
calldll #kernel32, "MoveFileA",_
currentfilename$ as ptr,_
movefilename$ as ptr,_
re as long
if re=0 then print "move failed"

The code below shows how to move a file with a different file name:
let currentfilename$= "c:\text.txt"
let movefilename$= "c:\folder\textmoved.txt"
calldll #kernel32, "MoveFileA",_
currentfilename$ as ptr,_
movefilename$ as ptr,_
re as long
if re=0 then print, "move failed"

Below the method by which a file can be moved using the name comand is shown:
name filename$ as movefilename$

You must set the filename$ string to the current name of the file you want to move. Remember to include the full path. Then you need to set the movefilename$ to the path to which you want to move it, plus the filename. movefilename$ can be any valid filename as long as it doesn't specify a file that already exists.

A working example is shown below:
let currentfilename$= "c:\text.txt"
let movefilename$= "c:\folder\text.txt"
name filename$ as movefilename$

Deleting a file

Files can be deleted using the kill command. The kill comand does not place the file in the recycle bin. The code below shows how the kill command works.
filedialog "select file a file to delete", "*.*", filename$
if filename$="" then wait
kill filename$

Use the code above wisely and don't just delete any odd file because it is hard to get it back.

Renaming a file

You can use the name command to rename a file. This command can also be used to move a file. See the move section above to learn how that works. The code below shows how to rename a file:
filedialog "select file a file to rename", "*.*", filename$
if filename$="" then wait
prompt "enter a new file name"; newfilename$
name filename$ as newfilename$
print "Filename has been changed from";filename$;"to";newfilename$
Remember to include file extensions such as .txt on the end of the new file name.

Article by Alex Barfoot
alexbarfoot at gmail.com
- alexbarfoot alexbarfoot