windows系统下批量删除OS X系统.DS_Store文件

这篇文章发布于 2018年05月7日,星期一,23:33,归类于 JS实例。 阅读 68632 次, 今日 11 次 26 条评论

 

更新与于N天后
经评论反馈,下面这个方法荣升为最佳方法:

文件夹窗口右上角的在搜索框键入 .DS_Store
全选 删除
清净

搜索配图示意:
删除.DS_Store

一、烦人的.DS_Store文件

设计师用的电脑是高大上的Mac Pro,开发用的电脑是高大的传统台式机,操作系统是windows,于是,设计师给开发传打包图片的时候,一解压,我了个擦,每个文件夹中间都有一个.DS_Store文件,好烦哦!

我就多次遇到这样的问题,平常文件夹就几层目录,手动删掉就好了,世界清静。

但是,最近有一次,好几十个文件夹,每个文件夹中都有一个.DS_Store文件,有的文件夹嵌套好几层,Oh my god! 要是一个一个删,真不如一刀剐了我。

幸好,自己会一点皮毛Node.js,于是,参照“JS一般般的网页重构可以使用Node.js做些什么”这篇文章中的套路,歘歘歘十几分钟就写好了一个小工具,biang一下就能把文件夹及其子文件夹中全部.DS_Store文件删除,这一瞬间的满足感堪比心爱的女人对着自己说我爱你,真真切切感受到会写点代码还真有用。

估计以后也会用得到,于是放在这里备忘下。

二、批量删除.DS_Store文件的Node.js小工具

新建个JS文件,假设名称是no-ds.js,写入如下代码:

const fs = require('fs');
stat = fs.stat;
const path = require('path');
/**
 * 删除目录下 .DS_Store 文件方法
 * @param  String dir 文件夹名称
 */
let nods = function (dir) {
    fs.readdir(dir, function(err, files) {
        files.forEach(function(filename) {
            var src = path.join(dir, filename);
            stat(src, function (err, st) {
                if (err) { throw err; }
                // 判断是否为文件
                if (st.isFile()) {
                    if (/\.DS_Store$/.test(filename)) {
                        fs.unlink(src, (err) => {
                          if (err) throw err;
                          console.log('成功删除' + src);
                        });
                    }
                } else {
                    // 作为文件夹处理
                    nods(src);
                }
            });
        });
    });
};

nods('./');

把这个JS文件放在想要删除的文件夹根目录下,命令行工具中执行下:

node no-ds

所有.DS_Store就全部不见啦!

三、不懂代码的人如何使用这个小工具呢?

  1. Node.js官网下载Node.js并安装:

    下载安装推荐

    推荐安装推荐版。

  2. 下载后面这个文件:no_DS.zip

    解压,会看到有个名为no-ds.jsrun.bat的两个文件:

    no-ds.js和run.bat两个文件

    哪个文件夹需要清除所有的.DS_Store文件,就把这两个文件复制到这个文件夹中,然后双击下run.bat,整个世界清净了!

    整个世界清净了

四、结束语

本工具在命令行工具用得很熟的人眼中可能会觉得多此一举了,一行命令事情搞这么复杂。不好意思,术业有专攻,命令行不熟,只能用自己会的一点知识来凑。

如果会批处理语法,应该一个批处理文件就可以搞定了,欢迎比较擅长小伙伴贡献代码,我会在本文中一同分享。


今天发现自己的《CSS世界》短短6个月不到已经出库2万多册:

CSS世界2万册

是时候搞一波抽奖回赠之类的活动。

大家觉得回赠什么物品比较好呢?预算100以下。

我能想到的有:

  • 《CSS世界》指定寄语签名版(价值69)
  • “CSS世界”文化衫(价值69)
  • 哈士奇企鹅公仔(价值60)

    哈士奇企鹅公仔

  • 起点点娘笔记本(价值49)

    起点点娘笔记本

  • Q币若干(价值50)

不知大家有没有更好的想法?

(本篇完)

分享到:


发表评论(目前26 条评论)

  1. weapon张说道:

    批处理代码如下,用法是第一层目录下的.DS_Store拖到批处理文件上
    @echo off & cd /d %~dp1
    del /f/s/q .DS_Store
    echo..DS_Store删除完成
    第二种方式批处理代码如下,用法是项目目录拖到批处理文件上
    @echo off & cd /d %1
    del /f/s/q .DS_Store
    echo..DS_Store删除完成
    第3种方式批处理代码如下,用法是批处理放到项目文件夹的上层目录,双击
    @echo off & cd /d %~dp0
    del /f/s/q .DS_Store
    echo..DS_Store删除完成

  2. weapon张说道:

    不就一行
    del /f/s/q .DS_Store
    的事情吗

  3. solarhell说道:

    哈哈哈 让你们设计师也用git 把.DS_Store 加到.gitignore 就好了

  4. trance说道:

    赶紧脱离windows 换mac 新的天地等着你。

  5. jiangwei说道:

    搜索一下 全部删除

  6. oerrite说道:

    我一直用VBS处理。。。。

  7. 铃铛说道:

    买了压在床头驱邪

  8. sun说道:

    css世界让我更优秀!

  9. lcina说道:

    虽然买了一本,但还是希望能拿到签名版的。

  10. 柳孤城说道:

    选我选我

  11. 该用户已注销说道:

    你老婆不打你吗

  12. Yussi说道:

    起点点娘笔记本!!!

  13. 我喜欢喝糖水说道:

    大家觉得回赠什么物品比较好呢?
    答:文化衫,文化衫,文化衫,文化衫(来自萌新的期待,css题材的帅气内涵一些的)

  14. 心满说道:

    在搜索框键入 .DS_Store
    全选 删除
    清净

  15. sumail说道:

    批处理文件是给非技术人员用的哇

  16. LinSL1111说道:

    老师老师《CSS世界》指定寄语签名版[调皮]

  17. liyang说道:

    求意见T桖杉

  18. vfv说道:

    第一笔购买,
    笔记本也不错

  19. 广州建设说道:

    学习了,感谢分享

  20. 张磊说道:

    我照着实现了一下,发现一个小问题,windows下磁盘根目录会存在一个System volume infomation,这个对象没有isFile()方法,也无法进行判断:if (!st.isFile) return; 所以我建议加一行代码:

    if (/^System/.test(filename)) return;

    跳过System开头的文件,这样就不会报错了。

  21. snadn说道:

    发现评论不支持emoji o(╥﹏╥)o

  22. snadn说道:

    开发的电脑应该有 git bash 吧。然后 `find . -name .DS_Store | xargs rm`

  23. dont说道:

    文化衫不错~

    CSS世界书签-配上鑫哥前端语录

  24. 张磊说道:

    哈士奇企鹅公仔?哈哈,有内涵啊,懂得举手!