1. File Listing

I need a program that will output a file list, including subfolders... kinda
like this:


Forms <dir>
    Texas <dir>
        doc1.doc
        doc2.doc
    New York <dir>
        doc3.doc
        doc4.doc
    California <dir>
        doc2.doc
        doc4.doc

Anybody wanna help? smile

Thanks!
ck

new topic     » topic index » view message » categorize

2. Re: File Listing

Yes, go to a DOS prompt, and type

dir/b/s

This will give you a list of all files and sub dirs, just the names no
dates, and to get it to a txt file

dir/s/b > dir.txt

to have the date info preserved,

dir/s > dir.txt

Alan

----- Original Message -----
From: "cklester" <cklester at HOTPOP.COM>
To: <EUPHORIA at LISTSERV.MUOHIO.EDU>
Sent: Thursday, May 04, 2000 2:34 PM
Subject: File Listing


> I need a program that will output a file list, including subfolders...
kinda
> like this:
>
>
> Forms <dir>
>     Texas <dir>
>         doc1.doc
>         doc2.doc
>     New York <dir>
>         doc3.doc
>         doc4.doc
>     California <dir>
>         doc2.doc
>         doc4.doc
>
> Anybody wanna help? smile
>
> Thanks!
> ck
>

new topic     » goto parent     » topic index » view message » categorize

3. Re: File Listing

C.K. Lester writes:

> I need a program that will output a file list,
> including subfolders...
> kinda like this:
> Forms <dir>
>    Texas <dir>
>        doc1.doc
>        doc2.doc
>    New York <dir>
>        doc3.doc
>        doc4.doc
>    California <dir>
>        doc2.doc
>        doc4.doc

That sounds like a job for walk_dir()...

-- list.ex - display files in a directory and subdirectories
-- usage: ex list directory
-- e.g. ex list .
--        ex list \windows

include file.e

sequence start_dir, list, cl

cl = command_line()
start_dir = cl[3]
list = {}

function save_name(sequence path_name, sequence entry)
-- called by walk_dir() for each file and directory
    sequence file_name

    file_name = entry[D_NAME]
    if find('d', entry[D_ATTRIBUTES]) then
        file_name &= '\\'
    end if
    for i = 1 to length(path_name) do
        if path_name[i] = '\\' then
            file_name = "  " & file_name
         end if
    end for
    -- we could simply print the name, but let's make a list
    list = append(list, file_name)
    return 0 -- keep going
end function

if walk_dir(start_dir, routine_id("save_name"), 1) != 0 then
    puts(2, "walk_dir failed!\n")
end if

-- display the results
for i = 1 to length(list) do
    puts(1, list[i] & '\n')
end for

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

4. Re: File Listing

Hello CK Lester,

> > I need a program that will output a file list,
> > including subfolders...
> > kinda like this:
> > Forms <dir>
> >    Texas <dir>
> >        doc1.doc
> >        doc2.doc
> >    New York <dir>
> >        doc3.doc
> >        doc4.doc
> >    California <dir>
> >        doc2.doc
> >        doc4.doc

I tried my hand at this but I see Robert has beaten me to
the punch. However, I couldn't get Robs solution to run
so I perservered  with my own and now its finally finished.
I thought of using walk_dir but decided to hard code
everything to be as customizable as possible.

This demo prints the Euphoria directory structure to a
file called Test.txt. You could just as easliy use these
routines to print to the screen or any file.

Here is the source:

include file.e

type string (object s) -- an ASCII ignorent string type
  if not sequence (s) then
    return 0
  end if
  for i = 1 to length (s) do
    if sequence (s[i]) then
      return 0
    end if
  end for
  return 1
end type

function get_file_list (sequence path) -- get the dir structure of a dir
  sequence ret
  object temp
  ret = {}
  temp = dir (path)
  if atom (temp) then
    puts (1, "Error: bad path.")
    abort (1)
  end if
  for i = 1 to length (temp) do
    if find ('d', temp [i] [D_ATTRIBUTES]) then -- it's a directory
      if not equal ( temp [i] [D_NAME] , "..") and
         not equal ( temp [i] [D_NAME] , ".") then
        ret = append (ret,
         {temp[i][D_NAME],get_file_list(path&'\\'&temp[i][D_NAME])}
         )
      end if
    else
      ret &= {temp [i] [D_NAME]}
    end if
  end for
  return ret --{{path, ret}}
end function

constant tab = 4 -- how many spaces each indention is

procedure print_list (integer fn, sequence data, integer level)
  for i = 1 to length (data) do
    puts (fn, repeat (' ', level * tab))
    if string (data [i]) then
      puts (fn, data [i] & '\n')
    elsif sequence (data [i]) then -- its a directory
      puts (fn, "\n" & repeat (' ', level * tab))
      puts (fn, data [i][1] & " <dir>\n")
      print_list (fn, data [i][2], level+1)
    end if
  end for
end procedure

procedure print_file_list (integer fn, sequence path)
  puts (fn, path & " <dir>\n\n")
  print_list (fn, get_file_list (path), 1)
end procedure

constant f = open ("test.txt", "w")

print_file_list (f, "c:\\Euphoria")

I hope this is useful,
.     __       _____  __    __    __    __    _____
.    /\ \     /\    \|\ \  /\ \  /\ \  /\ \  /\    \
.   /  \_\   /  \____\ \_\/  \_\/  \_\/  \_\/  \____\
.  /   / /  /   / ___/ |  |  / |   / /   / /\  /  __ \
. /   / /  /   / /_\ | |  | /  |  / /   / /\_\/  /_ \/
./   / /\ /   / ___/ | |  |/   | / /   / /\ \ \__  \
.\  / /__\\  / /__\  \ |    /| |/ /\  / /  \/\_\/  /
. \/_____/ \/_____/   \|___/\|___/  \/_/    \_____/
keroltarr at hotmail.com  http://geocities.com/keroltarr/
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu