Here's some code that I've used for a while. You may need to change the date and time informats, as the "dir" command uses your system settings. Tom data dirlist; length test_rec $ 4096; retain vol_let vol_name vol_ser dir_name first_dir; length dir_name first_dir $ 1024; length file_name $ 256; length file_prefix $ 256; length file_ext $ 256; format file_date yymmdd10.; format file_time time5.; drop test_rec num_dots num_slash; infile "C:\listing.txt"; input; test_rec = _infile_; if substr(test_rec, 1, 1) ^= " " then do; if substr(test_rec, 25, 5) = "<DIR>" | substr(test_rec, 25, 10) = "<JUNCTION>" then; else do; file_date = input(substr(test_rec, 1, 10), ddmmyy10.); file_time = input(substr(test_rec, 13, 8), time8.); file_size = input(substr(test_rec, 22, 17), comma17.); file_name = substr(trim(test_rec), 40); num_dots = countc(file_name, ".", "o"); if num_dots = 1 then do; file_prefix = scan(file_name, 1, "."); file_ext = scan(file_name, 2, "."); end; else if num_dots = 0 then do; file_prefix = file_name; file_ext = ""; end; else do; file_prefix = reverse(scan(reverse(file_name), 2, ".")); file_ext = reverse(scan(reverse(file_name), 1, ".")); end; output; end; end; else if substr(test_rec, 1, 14) = " Directory of " then do; dir_name = substr(trim(test_rec), 15); num_slash = countc(dir_name, "\", "o"); if num_slash = 1 then first_dir = dir_name; else first_dir = scan(dir_name, 1, "\")||"\"||scan(dir_name, 2, "\"); end; else if substr(test_rec, 1, 17) = " Volume in drive " then do; vol_let = substr(test_rec, 18, 1); vol_name = substr(trim(test_rec), 23); end; else if substr(test_rec, 1, 25) = " Volume Serial Number is " then do; vol_ser = substr(trim(test_rec), 26); end; run;
... View more