Windows 7 Forums
Welcome to Windows 7 Forums. Our forum is dedicated to helping you find support and solutions for any problems regarding your Windows 7 PC be it Dell, HP, Acer, Asus or a custom build. We also provide an extensive Windows 7 tutorial section that covers a wide range of tips and tricks.

Windows 7: Batch File that grabs file names from folder to insert into batch file

30 May 2012   #1

Windows 7 (6.1.7600.16385)
Batch File that grabs file names from folder to insert into batch file

Ok I'm totally at a loss on how to word this so I'm just going to write it out the best that I can...

First I have a batch file that I'm writing that will convert mp4 files to mp3 files (I have a lot) for a buddies band using ffmpeg.

Here's the code that I'm using:

ffmpeg -i folder\video.mp4 -f mp3 -ab 160000 -vn "\different folder\music.mp3"

what I would like to do is add to this so that I don't have to write out this code for every file I have... :/

I have the mp4 files in one folder and than the mp3 files are saving to another folder.

So here's an example of what the code will do if it isn't clear yet.

Folder 1:


what it should do is grab video1.mp4 and convert it.

ffmpeg -i folder\video1.mp4 -f mp3 -ab 160000 -vn "\different folder\music1.mp3"

and than move onto the next one

ffmpeg -i folder\video2.mp4 -f mp3 -ab 160000 -vn "\different folder\music2.mp3"

and than the next one

ffmpeg -i folder\video3.mp4 -f mp3 -ab 160000 -vn "\different folder\music3.mp3"

It's going to have to grab the name from the mp4 file and insert it for the mp3 file.

I can get around pretty good in cmd if it's basic commands but when it comes to something like this I'm a little confused...

Thanks for the help in advance!
I'll see what i can do about searching some more on what I would have to do and if I find the solution I'll post it here if it isn't already answered.

My System SpecsSystem Spec

30 May 2012   #2


A DOS "for /f" loop should do the trick, although changing the filename extension for the output to do everything in one line escapes me at the moment.

Perhaps you could do a dir .\folder\*.mp4/s/b > mp4s.txt, then make a copy of that and edit each line to rename the file to the destination name, and save it as mp3s.txt. Then you just feed both the source (mp4s.txt) and destination (mp3s.txt) filesnames into the for /f loop which handles the ffmpeg conversion.

Quite a crude solution and you'd have to handpatch the destination filenames, but i can't think of how to get a source mp4 filename and then just change the extension.
My System SpecsSystem Spec
31 May 2012   #3

Windows 7 (6.1.7600.16385)

Well I have gotten some of it figured out...
What my script does so far:

1) It scans the folder containing the mp4 files and saves the list to a text file with the full path of each mp4 file.

dir /s /b "C:\Users\Username\Desktop\Music Stuff\Videos\*.*" > "videolist.txt"

What it shows inside the "videolist" text file:
C:\Users\username\Desktop\Music Stuff\Videos\Video1.mp4
C:\Users\username\Desktop\Music Stuff\Videos\Video2.mp4
C:\Users\username\Desktop\Music Stuff\Videos\Video3.mp4

2) It scans the folder containing the mp4 files again and this time saves the list to a separate text file with just the file name including the extension which isn't a big deal.

dir /b "C:\Users\Username\Desktop\Music Stuff\Videos\*.*" > "musiclist.txt"

What it shows inside the "musiclist" text file:

So far this part works I open the text files and each mp4 file is listed on it's own line and looks like it should work, but the issue I'm having is when I use a for /f statement it doesn't seem to want to take one file from the list do the conversion and than move on to the next file on the list... :/

Here's the entire code that I have so far...


@echo off
dir /s /b "C:\Users\username\Desktop\Music Stuff\Videos\*.*" > "videolist.txt"
dir /b "C:\Users\username\Desktop\Music Stuff\Videos\*.*" > "musiclist.txt"

for /F "tokens=*" %%A in (videolist.tmp) do set video= %%A
for /F "tokens=*" %%A in (musiclist.tmp) do set music= %%A

ffmpeg -i "%video%" -f mp3 -ab 160000 -vn "%music%".mp3


del videolist.txt musiclist.txt

It's not the prettiest code ever but I would think it should work but not so much yet...
Any ideas?
I just need it to take the first line from the videolist.txt file and insert it into the %video% spot and take the first line from the musiclist.txt file and insert it into the %music% spot and than run the conversion and than move on down the list sequentially. Seems easy right?!?! LOL
My System SpecsSystem Spec

01 Jun 2012   #4

Windows 7 (6.1.7600.16385)

Well it is figured out!
I was making it WAY more complicated than it needed to be...

Here's the code that worked!


set dir=C:\Users\Username\Desktop\Music Stuff

for /f "delims=" %%A in ('dir /b "%dir%\Videos\*.*"') do ("%dir%\ffmpeg\bin\ffmpeg" -i "%dir%\Videos\%%~A" -f mp3 -ab 160000 -vn "%dir%\Finished Music\%%~nA.mp3"

Thanks for the help though!
My System SpecsSystem Spec

 Batch File that grabs file names from folder to insert into batch file

Thread Tools

Similar help and support threads for2: Batch File that grabs file names from folder to insert into batch file
Thread Forum
Solved How to run a batch file at logoff & some batch scripting help please Backup and Restore
Help required creating batch file to read .csv file General Discussion
batch file open file for program in the startup folder General Discussion
Batch file to create a folder with name of the time. Backup and Restore
How to create a batch file that will move files based on the file type General Discussion
Batch file for moving files to folder? General Discussion
Batch File to Open ALL Links in Folder General Discussion

Our Sites

Site Links

About Us

Find Us

Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

Designer Media Ltd

All times are GMT -5. The time now is 11:03 AM.
Twitter Facebook Google+

Windows 7 Forums

Seven Forums Android App Seven Forums IOS App

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33