rename single .txt file with changing seed number

2 次查看(过去 30 天)
I've created a GUI with App Designer. It's basic, four drop down menus with descriptors, and a single button that renames a .txt file
The file i'm trying to rename is spit out by a data aquisition software that names the file with a prefix and a seed number. For example:
"NewTest00001.txt", then the next save spits out "NewTest00002.txt", ecetera.
The code i've written within the ButtonPushed function is as follows:
app.DropDown1.Value;
app.DropDown2.Value;
app.DropDown3.Value;
app.DropDown4.Value;
NewTest='C:\Users\PC\Desktop\TestData\NewTest00001.txt';
movefile(NewTest, strcat('C:\Users\PC\Desktop\TestData\Renamed\',...
app.DropDown1.Value,app.DropDown2.Value,app.DropDown3.Value,...
app.DropDown4,'.txt'));
Which works when the file name matches, the problem is that the seed changes after every save. I've tried changing the code to
NewTest='C:\Users\PC\Desktop\TestData\*.txt';
But that creates a new folder within the "Renamed" folder due to the * which interprets it as a folder instead of a text file.
There's got to be a simple solution i'm unaware of where the code reads in the text file like "<NewTest><LiterallyAnyNumber>.txt" and renames it.
Essentially I run test, save test as "NewTest#####.txt", Press the rename button in my GUI, repeat.

采纳的回答

Chris
Chris 2022-9-22
编辑:Chris 2022-9-22
Do you know the seed?
testSeed = 454;
NewTest = strcat('C:\Users\PC\Desktop\TestData', num2str(testSeed), '.txt')
NewTest = 'C:\Users\PC\Desktop\TestData454.txt'
If you want the same number of digits in the seed each time:
testStr = sprintf('%05d',testSeed);
NewerTest = strcat('C:\Users\PC\Desktop\TestData', testStr, '.txt')
NewerTest = 'C:\Users\PC\Desktop\TestData00454.txt'
  5 个评论
Garrett Craig Porter
编辑:Garrett Craig Porter 2022-9-23
Thank you so much Chris! I was able to get the proper execution with the following code. I didn't even think to approach the code to sort the files that way and just grab it by date.
app.DropDown1.Value;
app.DropDown2.Value;
app.DropDown3.Value;
app.DropDown4.Value;
d=dir('C:\Users\PC\Desktop\TestData\*.txt');
[~,I]=sort({d(:).date});
testSeed=d(I(end)).name;
NewTest=(strcat('C:\Users\PC\Desktop\TestData\',testSeed));
movefile(NewTest, strcat('C:\Users\PC\Desktop\TestData\Renamed\',...
app.DropDown1.Value,app.DropDown2.Value,app.DropDown3.Value,...
app.DropDown4,'.txt'));
Chris
Chris 2022-9-23
@Garrett Craig Porter looks good, but I'm not sure the first four lines are doing anything.
They get the values in the dropdown menus, but they don't assign the values anywhere, nor print them to the display due to the presence of the semicolons. The code should run fine without those lines, I think.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by