TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is it possible to iterate through a folder containing pictures while first filtering file extension tikz,png,pdf or eps, and then getting a list of filenames of the directory for use in a for loop, and add them using their filename as image text in my latex code?? I tried googling code examples but no luck yet.

share|improve this question
Windows? Unix? Linux? Which? – kiss my armpit Aug 2 '14 at 16:19
What would extension .tikz be? Raw tikz code to be included with \input? Would there be any duplicate filenames independent of extension (e.g. foo.png and foo.eps)? – Alan Munn Aug 2 '14 at 16:22
Sorry I mean windows. .tikz is matlab2tikz output, last question yes there would – BigChief Aug 2 '14 at 16:32
up vote 6 down vote accepted

This answer had been prepared long time ago and I am waiting for someone to ask it. Here (click) is the history.


rem batch.bat
echo off

rem %1 path (relative to the main input file) to the files to be iterated 
rem %2 output file name
rem remaining args represent the extension of file to be iterated

set curdir=%CD%
cd "%~1"

rem output must be enclosed with "" to allow spaces in the path
set output="%curdir%\%~1.list"

if exist %output% del %output%
copy nul %output%

if "%~1"=="" goto :eof
dir /b *.%~1 >> %output%
goto :loop


% filename.tex must be compiled with 
% pdflatex -shell-escape filename.tex 


% #1: directory path with a trailing /
% #2: a list of file extensions: eps pdf jpg png
\immediate\write18{batch "#1" \jobname\space #2}
    \read\reader to \filename

% ./ also works
\IterateImages{Sample Pictures/}{jpg png pdf}

There is(are) \the\TotalFiles\ file(s) in total.


To prove that I did not lie.

enter image description here


For security reason, filecontents does not allow us to create batch.bat on the fly.

share|improve this answer
Thanks!! Absolutely outrageous!! To answer this so fast so comprehensive. Cool to think of a batch script to handle this. Last minor request: How to skip extensions in the resulting output image text?? Would it be possible without batch scripts?? I guess not? – BigChief Aug 2 '14 at 17:17
@BigChief: You can use \filename@base if you want the filename without extension. Using batch file is the best approach in my opinion. – kiss my armpit Aug 2 '14 at 17:20
Thanks! Will use @base really great solution. – BigChief Aug 2 '14 at 17:31
You can create the bat-file on the fly by first writing a batch.txt and then use write18 to rename it. But I would probably prefer a .lua script instead of a batch script. – Ulrike Fischer Aug 2 '14 at 17:41
@UlrikeFischer: A nice trick. Thanks. – kiss my armpit Aug 2 '14 at 17:42

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.