Recently I was on the task of getting some scripts together for handling FTP commands to run several time a day to move files around. Unfortunately, the platform that was already in place is a Windows 2008 R2 server. But, being optimistic we moved forward on the project. After digging around we soon found out that the list of options is slim on solutions for doing FTP transfers from scripts on Windows. There are really no known good solutions that are free that offer extensible scripting abilities. We ended up selecting CuteFTP Professional which was purchased by somebody else a few years back so a license was already owned for the software. I've used the client for CuteFTP in the past so I felt fairly comfortable with this selection. I also thought about installing Perl for Windows and trying to script something in there, which might still be a viable option.
Partway through the project we discovered that CuteFTP Pro's scripting interface has a few quirks. For example, one of the built-in function calls for doing a "remote rename" would end up passing the commands to the FTP server as "DELE" and "CWD" when it should have been doing a "RNFR" and "RNTO" (rename from, rename to). Yes, this is correct, it was doing a delete instead of a rename. In a production scenario, this is not good. And even further, this behaviour was intermittent, meaning sometimes while making the exact same "remote rename" function call, it would do the correct FTP steps with the "RNFR" and "RNTO" commands, and other times run the "DELE" and "CWD" commands. Totally random behaviour from our testing.
Another issue we faced was that sometimes our scripts would totally fail due to some unknown issue with the CuteFTP Pro scripting interface. All of our function calls would fail from our scripts, and CuteFTP Pro's Transfer Engine all of a sudden stopped writing log files (again for some unknown reason) so we were left without a cause or solution yet again. Rebooting the server and re-running our scripts resolved the problem though (yes, I'm scratching my head, too).
The next step was to contact Globalscape but we soon found out that in order to get direct support for the product, we would need to pay for a maintenance contract. And, Globalscape does not support debugging scripts. And in thinking about this, I can understand it somewhat. But on the other hand, they release a product so they should stand behind it. I also made it a point in my message to them that I think I found a bug in their software, but I got a generic response that they do not support scripts, and that was that. Globalscape does host a user forum, which we checked out as well. But, the forum has such little traffic that a majority of questions go unanswered. Not even employees or developers of the software look through the forums (at least not that we can tell). So, where do we go from here? I'm afraid to select another product and increase our timeframe of the project.
Countless times during this project I found myself reciting "if the server had been a GNU/Linux host, we could do this". And that is so true. I've been a big fan of "ncftp" for many many years, which is a wonderful command based FTP client. And, there are a number of tools available to run scripts for ncftp. A few are "ncftpget","ncftpput", "ncftpbatch", and others that provide a complete toolset for handling FTP from scripts. And, I know the support audience for ncftp is large enough that we would be able to get help if we needed any. I doubt that would be the case as there is already a wealth of information out there as it is.
The problem here is that proprietary products can have very small audiences, and it seems that the vendor providing the software is so focused on sales that they lack in support. If you search on "ncftp" and scripting, you will find countless posts on users helping other users to write scripts, something you can't get with CuteFTP Professional's forums. Again and as I've mentioned in the past, open source software really opens the collaboration of users with other users, so that support resources are vast and often very helpful. Issues with the software get posted quickly and fixed quickly, and as a result the software is often times very powerful and stable.