# how to change the name of exporting file automatically

I want to export some sort of data from Mathematica to .txt files but every time with a different name.clearly I want the name of files change automatically in each loop for each series of data that are produced in each iteration.

s = -1
While[s < 2*q = 2.;
\[CapitalDelta] = 0.5;
smin = -0.3;
smax = 0.1;
\[CapitalDelta]s = 0.01;
L = 5;
p = 2^L;
s = s + 0.05;
H = {{1, 0, 0, 0}, {0, 1 - (\[CapitalDelta] + 1)*q, E^s/q, E^s/q},
{0, q E^s, 1 - (\[CapitalDelta] + 1)/q, q E^s},
{0, \[CapitalDelta]*q*E^s, (\[CapitalDelta]*E^s)/q, 1 - (q + 1/q)}};
IM = IdentityMatrix[2];
row = ConstantArray[1, p];
sum = row.H;
Export["sum,L=5,q=2,d=0.5,s=-1.txt", sum];
Export["H,L=5,q=2,d=0.5,s=-1.txt", Flatten[H], "Table"]
];


I want to change "s" in the name of the files each time with the real value of it in that itteration

• You should be more specific (please give some code) but maybe this will help. Feb 3, 2015 at 8:40
• Do[Export["superfile-"<>ToString[i]<>".jpg",fig[[i]]],{i,1,10}] Feb 3, 2015 at 8:48
• s = -1 While[s < 2*q = 2.; [CapitalDelta] = 0.5; smin = -0.3; smax = 0.1; [CapitalDelta]s = 0.01; L = 5; p = 2^L; s = s + 0.05; H = {{1, 0, 0, 0}, {0, 1 - ([CapitalDelta] + 1)*q, E^s/q, E^s/q}, {0, qE^s, 1 - ([CapitalDelta] + 1)/q, qE^s}, {0, [CapitalDelta]*q*E^s, ([CapitalDelta]*E^s)/q, 1 - (q + 1/q)}}; IM = IdentityMatrix[2]; row = ConstantArray[1, p]; sum = row . H; Export["sum,L=5,q=2,d=0.5,s=-1.txt", sum]; Export["H,L=5,q=2,d=0.5,s=-1.txt", Flatten[H], "Table"]] Feb 3, 2015 at 8:52
• I want to change "s" in the name of the files each time with the real value of it in that itteration Feb 3, 2015 at 8:53
• @sarakaviani I edited your question to include your code (which I can't get to run as written - the test for the While loop isn't constructed right I think). Feb 3, 2015 at 9:36

Instead of "H,L=5,q=2,d=0.5,s=-1.txt" write for example:

"H,L=5,q=2,d=0.5,s="<>ToString[CForm[s]]<>".txt"


A very simple solution using TextString and StringJoin:

Export[StringJoin["C:\\Users\\...\\first_part_of_name", TextString[variable], ".txt"], sum];

• very clean and neat answer, helped me a lot. Dec 6, 2016 at 10:25
• Export[StringJoin["C:/eflut", TextString[A], ".tiff"], out]; I want to label eflut graph of out with the value of A eg 3,4 but got 2 errors StringJoin::string: String expected at position 2 in C:/eflut<>TextString[3]<>.tiff. >> Export::chtype: First argument C:/eflut<>TextString[3]<>.tiff is not a valid file specification. >> Oct 3, 2019 at 15:17

You could generate the filenames using StringTemplate with a positional argument:

s=-1;
mytemplate := StringTemplate["sum, L=5, q=2, d=0.5, s=svalue.txt"]
filestring = mytemplate[<|"svalue" -> ToString[s]|>]


(* sum,L=5,q=2,d=0.5,s=-1.txt *)

There is a simple way if you are using the Table[] function. For example: Table[Export[NotebookDirectory[]<>ToString@StringForm["test.txt", l], Table[{l,l^2}, {l, 1, 10}];. In this case, the program will generate ten files written as "testl.txt" for each l with the values l and l^2 as columns.