EPERM fs.rename

时间:2016-08-16 20:34:48

标签: javascript node.js permissions

我想出了一个错误,我写这个节点脚本是为了重命名一堆文件。

> node test/rename.js

fs.js:809
  return binding.rename(pathModule._makeLong(oldPath),
             ^
Error: EPERM: operation not permitted, rename '/path/to/file v2 032.png' -> '/path/to/file 032.png'
    at Error (native)
    at Object.fs.renameSync (fs.js:809:18)
    at Object.<anonymous> (/Users/[user]/Documents/test/rename.js:9:8)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.runMain (module.js:575:10)
    at run (bootstrap_node.js:352:7)

这是我正在使用的代码。

var fs = require('fs');
var path = require('path');
var folder = '/path/to/'
var regExp = /\sv2/gi;

var directory = fs.readdirSync(folder);
for (i=0; i < directory.length; i++) {
  if (directory[i].match(regExp)) {
    fs.renameSync(path.join(folder, directory[i]), path.join(folder, directory[i].replace(regExp, '')))
  };
}

我同时使用node test/rename.jssudo node test/rename.js同时尝试了两次抛出错误。我不知道我在哪里搞砸了。

1 个答案:

答案 0 :(得分:0)

解决方案:文件被锁定在OSX的var b = '<a class="dz-remove removeAttachment">Remove</a>'; $(someOtherElement).append(b); $(someOtherElement).delegate('.removeAttachment', 'click', function() { dropone.removeAllFiles(); }) 标签中。我解锁文件,重新运行节点脚本,然后挥动!它扭曲了,而且很有效。