如何在SAS中完整复制包含子文件夹的目录?
在SAS中复制包含子文件夹的目录解决方案
你之前的方法失败是因为没有使用递归复制的参数,不同操作系统的命令参数不同,以下分场景给出可行方案:
Windows 环境
Windows的copy命令默认不递归子文件夹,需要改用xcopy并添加递归参数:
方法1:使用X命令
option xwait xsync; X xcopy "folder_to_copy\*" "new_folder\" /E /I /Y;
参数说明:
/E:复制所有子文件夹(包括空文件夹)/I:如果目标目录不存在,自动创建该目录/Y:覆盖现有文件时不弹出确认提示
方法2:使用call system函数
data _null_; call system('xcopy "folder_to_copy\*" "new_folder\" /E /I /Y'); run;
Linux/Unix 环境
Linux的cp命令需要添加-R(递归)参数才能复制子文件夹:
方法1:使用X命令
option xwait xsync; X cp -R "folder_to_copy" "new_folder";
注意:如果
new_folder已存在,上述命令会将folder_to_copy完整复制到new_folder内部(即new_folder/folder_to_copy)。若要直接复制源目录内的所有内容到目标目录,可改为:X cp -R "folder_to_copy/." "new_folder/";
方法2:使用call system函数
data _null_; call system('cp -R "folder_to_copy" "new_folder"'); run;
额外说明
如果不想依赖系统命令,也可以用SAS内置函数实现,但需要编写代码遍历目录结构(用dcreate创建子目录,fcopy复制文件),步骤相对繁琐,推荐优先使用上述系统命令方案。
内容的提问来源于stack exchange,提问作者Youssef_boughanmi
相关产品推荐
相关产品推荐

