所以我有一个非常简单的问题,我正试图解决。我想在MATLAB中创建一个文件的备份。
这是我的代码(我从当前目录启动此脚本):
backup_dir=strcat(pwd,'/backups/');
cd('../../source_destination/');
source_dir=pwd;
cd(backup_dir);
source_files=strcat(source_dir,'/*.m');
source_file_list=dir(source_files);
source_file_names={source_file_list.name}';
for i=1:numel(source_file_names)
source_file=strcat(source_dir,'/',source_file_names(i));
backup_file=strcat(backup_dir,source_file_names(i));
copyfile(source_file,backup_file);
end
运行此操作会给我一个错误:
Error using copyfile
Argument must contain a string.
但是,当我实际检查source_file
和backup_file
时,两个变量都返回一个有效的字符串(由' '
括起来),两个字符串都指向一个有效的文件:
>> source_file
source_file =
'/Users/me/mydir/cool/source_destination/archive.m'
>> backup_file
backup_file =
'/Users/me/mydir/cool/world/scripts/backups/archive.m'
此外,source_file_list
的实际内容有效。
那我为什么会收到这个错误?
答案 0 :(得分:1)
您需要使用大括号取消引用cell
数组内容,否则strcat
会返回cell
字符串数组:
for i=1:numel(source_file_names)
source_file=strcat(source_dir,'/',source_file_names{i});
backup_file=strcat(backup_dir,source_file_names{i});
copyfile(source_file,backup_file);
end