Sample code for 30+ languages & platforms
Tcl

Count Files in a Remote FTP Directory

See more FTP Examples

Demonstrates the Chilkat Ftp2.GetDirCount method, which returns the number of files and directories in the current remote directory. It takes no arguments; the first call retrieves the listing, and the count reflects the case-insensitive ListPattern filter. A negative return indicates failure.

Background: GetDirCount is the entry point to Chilkat's index-based directory API: its first call fetches the listing for the current directory into a cache, and the returned count establishes the valid index range (0 through count - 1) for the accessor methods that read names, sizes, and attributes. The ListPattern property narrows the listing to matching names before counting, which is how you list, say, only *.html without filtering in your own code.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

#  Demonstrates the Ftp2.GetDirCount method, which returns the number of files and directories in
#  the current remote directory's listing.  It takes no arguments.  The first call retrieves the
#  listing; the count reflects the case-insensitive ListPattern filter.

set ftp [new_CkFtp2]

CkFtp2_put_Hostname $ftp "ftp.example.com"
CkFtp2_put_Username $ftp "myFtpLogin"

#  Normally you would not hard-code the password in source.  You should instead obtain it
#  from an interactive prompt, environment variable, or a secrets vault.
CkFtp2_put_Password $ftp "myPassword"

set success [CkFtp2_Connect $ftp]
if {$success == 0} then {
    puts [CkFtp2_lastErrorText $ftp]
    delete_CkFtp2 $ftp
    exit
}

set success [CkFtp2_ChangeRemoteDir $ftp "public_html"]
if {$success == 0} then {
    puts [CkFtp2_lastErrorText $ftp]
    delete_CkFtp2 $ftp
    exit
}

#  Optionally filter the listing with a wildcard pattern.  "*" (the default) matches everything.
CkFtp2_put_ListPattern $ftp "*.html"

set n [CkFtp2_GetDirCount $ftp]
if {$n < 0} then {
    puts [CkFtp2_lastErrorText $ftp]
    delete_CkFtp2 $ftp
    exit
}

puts "Matching entries: $n"

#  The count defines the valid index range 0 through n-1 for the indexed accessor methods.

for {set i 0} {$i <= [expr $n - 1]} {incr i} {
    set name [CkFtp2_getFilename $ftp $i]
    puts "$name"
}

set success [CkFtp2_Disconnect $ftp]
if {$success == 0} then {
    puts [CkFtp2_lastErrorText $ftp]
    delete_CkFtp2 $ftp
    exit
}


delete_CkFtp2 $ftp