Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
REQUEST simple ex. of Folder filenames to variables
#1
Good Morning,

Could someone provide me with a short ex. of converting a folder's: a) filename w. extension and b) the path to variables

Let's say we have a folder:

C:\folder

with 3 files:

file1.txt
file2.txt
file3.txt

How can I have QM do this for any folder?

Any help would be greatly appreciated!!!!

Kent
#2
With dialog "Enumerate files" you can create this code:
Macro Macro2659
Code:
Copy      Help
Dir d
foreach(d "C:\folder\*" FE_Dir)
,str path=d.FullPath
,out path
,str name=d.FileName
,
If need variables, replace it to:
Macro Macro2659
Code:
Copy      Help
str folder="C:\folder"
str files="*"
Dir d
foreach(d F"{folder}\{files}" FE_Dir)
,str path=d.FullPath
,out path
,str name=d.FileName
,
Or use function GetFilesInFolder and pass variables as its second and third arguments.
#3
Thanks! -and shall continue w. my work now!
#4
Gintaras, as ALWAYS I truly appreciate your help!!!

What I actually need is a variable for each/every filename in a folder, so that if a folder had these three files

file1.txt
file2.txt
file3.txt

the result would be three variables: var1, var2, var3 (var1 = file1.txt; var2 = file2.txt; & var3 = file3.txt)

The result of the examples you provided appear to yield only one variable, that being for the last file treated by the 'foreach' function.

You mentioned "Or use function GetFilesInFolder and pass variables as its second and third arguments" but after looking through the documentation I can't figure out how to do this???

Thanks Again
#5
Macro Macro2661
Code:
Copy      Help
ARRAY(str) a
GetFilesInFolder a folder "*"
out a[0] ;;variable 1
out a[1] ;;variable 2
out a[2] ;;variable 3
#6
Gintaras, THANK YOU ONCE MORE!!! I'm not a programmer nor computer specialist! but as I have shared, I have more than a hundred QM macros w. literally thousands of lines of code to help with my research and it is truly wonderful!

Your last example is what I am after, but I have one more question for now:

What if I create a macro to generate a variable for each 'filenamepath' & a variable for each 'filename.xxx' in a folder w. "GetFilesInFolder" but I don't know how many files are in the folder? Let's say that this macro could be run for any folder on my computer.

Could you provide an example of this?
#7
Macro Macro2661
Code:
Copy      Help
str folder="$my qm$"
ARRAY(str) a
GetFilesInFolder a folder "*"
int i
for i 0 a.len
,out a[i]
,str filename.getfilename(a[i] 1)
,out filename
,
#8
Wonderful!!! this string and my other post from yesterday (How to extrapolate a specific element in a filename) have me on my way to creating my next macro.
THANKS!!!!!!! I tell everyone in my research world about QM!
#9
Gintaras, the last post does indeed do precisely what I want in step one of the macro or function. I have REALLY tried ... read ... etc. ... to do the next steps and with no luck SO I will present an additional question(s) to you.

Here is what I REALLY want this function/macro to do:

1) create a variable for every file found in one of my 'pattern' folders

2) create a variable for the file-path for each file in that folder (C:\folder\filename1{cat}.txt)

3) create a variable for the keyword inside the curly brackets for each file in this folder ("cat" from the above example}
(You graciously showed me how to do this for a single file in the post yesterday "How to extrapolate a specific element in a filename")

Example, the macro/function finds the three files in the folder below and generates 9 variables for this

Folder C:\folder\ (has 3 files)

filename1{cat}.txt
filename2{dog}.txt
filename3{cow}.txt

The 9 variables generated would/could be something like:

varForFilepath1 = C:\folder\filename1{cat}.txt
varForFilename1= filename1{cat}.txt
varForKeyword1 = cat
varForFilepath2 = C:\folder\filename2{dog}.txt
varForFilename2= filename2{dog}.txt
varForKeyword2= dog
varForFilepath3 = C:\folder\filename3{cow}.txt
varForFilepath3 = filename3{cow}.txt
varForKeyword3 = cow

THANKS in ADVANCE for any help you provide!!!!!!!!!!!

Kent
#10
Macro Macro2663
Code:
Copy      Help
type T37254332 ~path ~name ~keyword
ARRAY(T37254332) a
Dir d
foreach(d "C:\folder\*.txt" FE_Dir)
,T37254332& r=a[]
,r.path=d.FullPath
,r.name=d.FileName
,findrx(r.path "\{(.+?)\}.txt$" 0 1 r.keyword 1)

;results
int i
for i 0 a.len
,T37254332& u=a[i]
,out u.path
,out u.name
,out u.keyword
,
#11
Gintaras, thank you

BUT

I look at your last post, as I have for the past hour and a half ... reading through the QM documentation ... can't find anything on 'Dir'
and I wonder, 'How would I have ever figured this out on my own? Wow! I know that --YOU KNOW-- that not everyone thinks the same! I truly do appreciate your help and I would gladly pay for it! Really! (I suppose that your site still says that you don't do this for a fee?) Anyway, this is wonderful.

Gintaras, this still leaves me one step short on my end. I don't know how to or can't figure out 'how-to' create a variable for each of the items that is presented in the:

out u.path
out u.name
out u.keyword

of your last post. The BIG QUESTION for me at the moment is:


How do I convert each item that is listed in the 'out result' to a variable that I can use? So that I have:

varForFilepath1 = C:\folder\filename1{cat}.txt
varForFilename1= filename1{cat}.txt
varForKeyword1 = cat
varForFilepath2 = C:\folder\filename2{dog}.txt
varForFilename2= filename2{dog}.txt
varForKeyword2= dog
varForFilepath3 = C:\folder\filename3{cow}.txt
varForFilepath3 = filename3{cow}.txt
varForKeyword3 = cow''

(Gintaras, I am able to create a variable for ONLY the last for each list. For instance:

str keywordx
keywordx=u.keyword

does assign the last keyword generated, 'cow', to 'keywordx')

BUT, as stated, I need to create a variable for every item that your previous code generates?

I can then use these variables to populate a Quick Macro's "List Box". For instance, the List-box would reveal:

Listbox list:

cat
dog
cow

And this choice of one of these would activate the rest of the macro, which has a few hundred lines and about 25 functions. (So my ultimate quest is to populate the 'listbox' with the 'keywords' generated from the folder. Do note, all files in this folder, that are limited to a maximum of 12, must comply with an assigned syntax that includes the "{keyword}" elements and no two files in the folder can have the same/identical 'keyword'.)

AND, you may be tired of hearing it, BUT I DO TRULY APPRECIATE OUR HELP!
#12
Quote:varForFilepath1 = C:\folder\filename1{cat}.txt
varForFilename1= filename1{cat}.txt
varForKeyword1 = cat
varForFilepath2 = C:\folder\filename2{dog}.txt
varForFilename2= filename2{dog}.txt
varForKeyword2= dog
varForFilepath3 = C:\folder\filename3{cow}.txt
varForFilepath3 = filename3{cow}.txt
varForKeyword3 = cow''

variable a[0].path is "C:\folder\filename1{cat}.txt"
variable a[0].name is "filename1{cat}.txt"
variable a[0].keyword is "cat"
variable a[1].path is "C:\folder\filename2{dog}.txt"
and so on
#13
Ahhh! wonderful!, beautiful!!!!! Thank you! Live & learn!


Forum Jump:


Users browsing this thread: 1 Guest(s)