When I use the settings file (e.g. -settings=ftp_settings.ini) the program does the CWD command for everyone file in the NLST command response. They all fail because they are files and not directories. Once it has exhausted the list it then proceeds to RETR the correct file. So it works, but it sure does waste a lot of time and bandwidth doing unnecessary CWD commands. If there happens to be a very long listing of files you can see how much more of a problem this becomes.
If I have it do the same thing, but without the settings file, and only set the parameters on the command line it works as expected and does not try to CWD every filename of the NLST command.
Please repeat the test with
-verbose=9
and post the result, your complete call with and without a settings file, and your ftp_settings.ini file (you can remove passwords).