楼主: shaynesnow
3490 9

[问答] 批量删除文件夹 [推广有奖]

  • 1关注
  • 0粉丝

高中生

95%

还不是VIP/贵宾

-

威望
0
论坛币
317 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
142 点
帖子
9
精华
0
在线时间
59 小时
注册时间
2011-9-15
最后登录
2020-10-4

楼主
shaynesnow 发表于 2014-12-12 12:43:09 来自手机 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
目前有以日期命名的n个文件夹,比如20141020 20141021 20141022 20141023我想用sas删除20141022之前所有文件夹,请各位大神教我,谢谢了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:文件夹 命名 文件夹

沙发
Tigflanker 发表于 2014-12-12 13:38:04 |只看作者 |坛友微信交流群
我能想到的是,PC SAS下,你需要:

先建立一个temp的filename,
再用call system或X加DIR命令抓取那个路径下所有文件夹的信息并写到上一步的临时文件中,
再用infile将文件导入到数据集,
最后再用call system做判断并执行。

使用道具

藤椅
mingfeng07 学生认证  发表于 2014-12-12 15:25:34 |只看作者 |坛友微信交流群
如果是excel的话,感觉这个完全没必要啊,,鼠标点击排个序,+shift就OK了,,sas处理一般不会用到这个上面吧。。

使用道具

板凳
shaynesnow 发表于 2014-12-12 15:47:26 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-12-12 15:25
如果是excel的话,感觉这个完全没必要啊,,鼠标点击排个序,+shift就OK了,,sas处理一般不会用到这个上面 ...
小需求,不是个人操作

使用道具

报纸
shaynesnow 发表于 2014-12-12 15:51:19 |只看作者 |坛友微信交流群
Tigflanker 发表于 2014-12-12 13:38
我能想到的是,PC SAS下,你需要:

先建立一个temp的filename,
恩,我也是这么想的,CMD也能直接实现这个,就是看看大家还有啥其他的思路,如果能略微写下代码就最好了,用CMD的话是这样的:
for /f  %%i in ('dir /b/ad') do if %%i  lss 20141022 rd  /s /q %%i

使用道具

地板
shaynesnow 发表于 2014-12-12 15:53:12 |只看作者 |坛友微信交流群
shaynesnow 发表于 2014-12-12 15:47
小需求,不是个人操作
文件夹,不是excel,想实现下这个功能,谢谢帮助

使用道具

7
柏家言 发表于 2014-12-12 16:07:52 |只看作者 |坛友微信交流群
proc datasets lib=libname ;
delete 2014: ;
run;

使用道具

8
柏家言 发表于 2014-12-12 16:08:35 |只看作者 |坛友微信交流群
1. 用pathname函数找出library的路径;
2. 第一个data步找出该路径下所有的文件夹,并保存完整的路径;
3. 第二个data步利用pipe执行系统命令,删除该路径下的文件夹。

使用道具

9
shaynesnow 发表于 2014-12-12 16:38:27 |只看作者 |坛友微信交流群
柏家言 发表于 2014-12-12 16:08
1. 用pathname函数找出library的路径;
2. 第一个data步找出该路径下所有的文件夹,并保存完整的路径;
3 ...
能具体写下吗,前面的这个针对的是sas数据集文件,不是文件夹

使用道具

10
Tigflanker 发表于 2014-12-12 17:47:58 |只看作者 |坛友微信交流群
  1. filename temp_del temp;    *filename temp_del "/user1/*****/test/contents.txt";

  2. data _null_;
  3.   set sashelp.vextfl(where=(upcase(cats(fileref)) eq 'TEMP_DEL'));
  4.   call symputx('temp_del',xpath);
  5.   call system("ls -al /user1/*****/test > "||symget('temp_del'));
  6. run;

  7. data _null_;
  8.   infile "&temp_del." missover;
  9.   input @1 a $ type user $10. c $10. size monthP $3. day timeP $5. file : $200. ;
  10.   
  11.   if type = 2 and cats(file) < cats(20141212) then call system(cats("rmdir /user1/*****/test/",file));
  12. run;
复制代码
Based on Unix SAS

自己查下PC下相对应的命令,自己先建个文件夹安全测试好。Unix可以直接用。

另外PC下应该也有个参数是指明所对应对象是文件夹还是文件,这个注意甄别。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 09:46