Note that your assignment to Ts is independent of the loop iterator a, so each time through the loop Ts is assigned the contents of the current file, replacing what was in Ts before; this is why at the end of the loop Ts has only the values from the last file.
There's a couple different ways to keep the contents of all the files: you can make Ts a 3-dimensional array with the 3rd dimension being file index (a), or you can make Ts a cell array, with each element being a matrix containing the corresponding file's contents. (The three dimensional array is only an option when all the dat-file matrices are the same size, which is the case here.)
d = uigetdir(pwd, 'Select a folder');
datfiles = dir(fullfile(d, '*.dat'));
for a = 1 : numel (datfiles)
fullfilename = datfiles(a).name;
Ts(:,:,a) = load(fullfilename);