Statistics 板


LINE

Dear SAS users, 请先进们是如何在SAS里检查资料夹的路径是否正确? 我download了别人的SAS macro , 在以下程式例子称为 check_existence_single_directory, 一次只可以检查1个资料夹 ,程式没有问题,我用这个macro检查了3个已经存在的folders, 全部都 有找到。接着我试着把macro改成可以检查多个资料夹,在以下程式例子称为check_existence_directory ,我再把那3个路径放进去检查,前2个okay,第3个路径被SAS在句点的地方断掉。请教该如何 改进我的macro? 照理说如果路径内的special characters是问题所在,那第一个macro应 该也会有问题。 我在SAS community上的发文,有syntax highlighting, 程式较容易看。 https://communities.sas.com/t5/SAS-Programming/Check-existence-of-multiple-directories-and-mask-special/td-p/768211 我再把程式贴如下: 以下是3个资料夹路径 /*Set up local directory*/ %let drive_E= E:\Lab_MarkS\lunC_work ; %let folder_path_SAS_macro= &drive_E.\library_genetics_epidemiology\SAS_macros_chang ; %let folder_path_Exp108= &drive_E.\Immunohistochemistry_images\data_output\AP_Exp108.1_PeterMac-lungCancer-CD8-PD1\analysis-results ; 以下是一次检查1个路径的SAS macro (working) /*SAS macro to check existence of a single directory (working)*/ %macro check_existence_single_directory(dir=) ; *options noxwait; %local rc fileref ; %let rc = %sysfunc(filename(fileref,&dir)) ; %if %sysfunc(fexist(&fileref)) %then %put NOTE: The directory "&dir" exists ; %else %do ; %sysexec md &dir ; %put %sysfunc(sysmsg()) The directory has been created. ; %end ; %let rc=%sysfunc(filename(fileref)) ; %mend check_existence_single_directory ; 用以上macro检查路径 (working) /*Check existence of folders*/ %check_existence_single_directory(dir=&drive_E.); %check_existence_single_directory(dir=&folder_path_SAS_macro.); %check_existence_single_directory(dir=&folder_path_Exp108.); 修改以上的macro (not working on paths containing special characters) /*SAS macro to check existence of multiple directories (working?)*/ %macro check_existence_directory(paths=) ; *options noxwait; %local rc fileref ; /*Loop thru each macro parameter value using do loop*/ %do i=1 %to %sysfunc(countw(&paths.)); /*Assign current directory to a macro variable path*/ %let path=%scan(&paths.,&i.); /*Assign the external path to a file reference then to a new macro variable rc(?)*/ %let rc = %sysfunc(filename(fileref,&path.)) ; %if %sysfunc(fexist(&fileref)) %then %put NOTE: The directory "&path." exists ; %else %do ; /*If the path is not found, create that directory*/ %sysexec md &path. ; %put %sysfunc(sysmsg()) The directory has been created. ; %end; %let rc=%sysfunc(filename(fileref)) ; %end; /*Close the do loop*/ %mend check_existence_directory ; 用以上macro检查多个路径 %check_existence_directory(paths=&drive_E. &folder_path_SAS_macro. &folder_path_Exp108.) ; %check_existence_directory(paths=%str(&drive_E. &folder_path_SAS_macro. &folder_path_Exp108.)) ; 因为第3个路径没有正确被解读,Windows cmd.exe跳了出来,并且新增了资料夹 SAS log里也出现了些warning. 不知为何SAS在C:\Users\lunC底下做事,这并不是我 所指定的路径 NOTE: The directory "E:\Lab_MarkS\lunC_work" exists NOTE: The directory "E:\Lab_MarkS\lunC_work\library_genetics_epidemiology\SAS_macros_chang" exists WARNING: Physical file does not exist, E:\Lab_MarkS\lunC_work\Immunohistochemistry_images\data_output\AP_Exp108. The directory has been created. WARNING: Physical file does not exist, C:\Users\lunC\1_PeterMac. The directory has been created. WARNING: Physical file does not exist, C:\Users\lunC\lungCancer. The directory has been created. WARNING: Physical file does not exist, C:\Users\lunC\CD8. The directory has been created. WARNING: Physical file does not exist, C:\Users\lunC\PD1\analysis. The directory has been created. WARNING: Physical file does not exist, C:\Users\lunC\results. The directory has been created. --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 110.174.219.126 (澳大利亚)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1631856838.A.0FC.html







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP