13

I have various functions that export Excel and text files, and need to have them named with a name based on the content of some variables in the function and the time and date. How can this be done with Mathematica?

Nothingtoseehere
  • 4,518
  • 2
  • 30
  • 58

2 Answers2

14

In the answer linked here, I did the following:

out = FileNameJoin @ {$TemporaryDirectory, "MathematicaOutput" <> ToString /@ Date[] <> ".rtf"}

/tmp/MathematicaOutput2012519111731.900549.rtf

Then you would say Export[out, ...].

If you want to have the date in a more readable and less detailed form, you could use this for the name:

"file-" <> Riffle[ToString /@ Date[][[;;3]], "-"] <> ".pdf"

file-2012-5-19.pdf

And of course, the content of any other variable could be inserted in the file name using ToString if needed. If you need a different separator between the data components, the Riffle command can be modified accordingly, by changing the second argument to another string that is allowed in filenames on your platform.

The FileNameJoin command is only needed if you'd like to create not just file names but directory structures in a cross-platform fashion.

Jens
  • 97,245
  • 7
  • 213
  • 499
9

Here's a variation on Jens' answer:

"file-" <> DateString[Riffle[{"Year", "Month", "Day"}, "-"]] <> ".pdf"

(*
==> "file-2012-05-19.pdf"
*)

which has the advantage of automatically padding the month and day with zeros so that the file names will sort nicely.

Brett Champion
  • 20,779
  • 2
  • 64
  • 121