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.


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.

  • 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
  • 1
    @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
  • 1
    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
  • forget about it got everything up and running – BigChief Aug 4 '14 at 15:09

Running on OSX I need to add
to remove the default character added to the end of the input line.

\usepackage[colorlinks=true, pdfstartview=FitV, linkcolor=blue, citecolor=blue, urlcolor=blue]{hyperref}
\usepackage[space]{grffile}% used to allow spaces within the filenames
    \immediate\write18{ls -1 "#1" > \jobname.txt}
    \read\reader to \line
    \includegraphics[width=2cm]{{#1\line}} %
Images from \url{https://www.pexels.com/public-domain-images/}\par

Sample ooutput

  • Can you add complete code to show where that command should be placed and post the output demonstrating that it works. – Andrew Swann Dec 8 '17 at 8:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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