How to? Instruct COPY to delete file if only partially copied (via FTP)

  • This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.
Feb 23, 2012
238
3
#1
I'm using TCC's copy command to download files via FTP. Occasionally there is an FTP error that aborts the transfer in the middle. In these cases, I find that the partially-copied file remains, giving the appearance that the file was copied correctly, even though it is only a partial file. Instead, I'd like to have COPY automatically delete any partially-copied file upon encountering an FTP error that aborts the transmission. Is there any way to do so?
It occurs to me that I can probably check the %_copy_errors variable and then delete the file if an error occurred; however, I'd much rather be able to just issue the copy command directly with an appropriate flag, if possible.
 
Feb 23, 2012
238
3
#3
Doesn't the /J option allow COPY to restart? It would make deleting the partial target file wasteful!
OK, let's say I use /J as I download a batch of 100 files. Is there then any way to query the 100 resulting files to determine which are complete and which have only been partially downloaded?
 
#4
The last one created on the target is the only one which may be potentially incomplete, assuming a single COPY command was used for all 100 files. I presume your download problems refer to premature termination (which results in not more than one file being incomplete, and others may never have been started), not to a communication link which results in many transfer errors (which I would hope the File Transfer Protocol would have detected and corrected).
 
Feb 23, 2012
238
3
#5
The last one created on the target is the only one which may be potentially incomplete, assuming a single COPY command was used for all 100 files. I presume your download problems refer to premature termination (which results in not more than one file being incomplete, and others may never have been started), not to a communication link which results in many transfer errors (which I would hope the File Transfer Protocol would have detected and corrected).
Actually, I'm running a batch file that runs an individual COPY command for each file. What I'm finding now is that if a copy somewhere in the middle of the batch file terminates prematurely (due to the ftp connection timing out), an incomplete file stays in the directory, and the batch file then continues with the next copy command.
 

rconn

Administrator
Staff member
May 14, 2008
10,096
85
#6
COPY will return a non-zero error if the file isn't fully copied (and if you're paranoid, you can add /V). COPY will not automatically delete the file on an error (though the only time you'll get a partial file is on an FTP copy, because that isn't supported by the Windows CopyFile API).
 
#8
Charles:
Yes - watch when you download protected files. I've done that ever since it became available.

Avi:
Your batch file should check each instance of COPY to verify it was successful, and reissue it if not. You have both the exit code from COPY and the %_copy_errors internal variable to provide that information. This could be the style:

do file in @list
copy /j ftp:%file ...
do while %_copy_errors gt 0
copy /j ftp:%file ...
enddo
enddo
--
HTH, Steve