くっそ重い

f:id:elve:20211231232830p:plain
snack.elve.club
snack.elve.club

最後のリネーム後のファイル名間違えて結構なファイルをロスした(ノД`)ナェルシク
上書きするから注意ね(ノД`)ナェルシク
googoleフォトから復活させる(ノД`)ナェルシク
処理が激重なので非同期処理にしたほうがいいかも。

exiftoolインストールしてc:\nodeにコピって名前変更しておく。

const fs = require('fs');
const { spawnSync } = require('child_process');
function getMonthStr(path) {
const stats = fs.statSync(path);
let d = [];
// 最終アクセス時刻
d.push(new Date(stats.atime));
// 最終修正時刻
d.push(new Date(stats.mtime));
// 最終状態変更時刻
d.push(new Date(stats.ctime));
//exiftoolで取れそうな日付タグ
let tag = ["FileModifyDate", "FileAccessDate", "FileCreateDate", "CreateDate", "ModifyDate", "MetadataDate", "DateTimeOriginal", "CreateDate"];
// シェル上で実行するコマンド
let i;
let COMMAND = "C:\\node\\exiftool";
for (i of tag) {
let re = spawnSync(COMMAND, ["-T", "-" + i, path]);
if (re.stdout === null) {
console.log(re.error.toString());
} else {
let tmp = re.stdout.toString().replace("'", "");
tmp = tmp.replace(/\r?\n/g, "");
tmp = tmp.replace(":", "-");
if (tmp != "-") {
d.push(new Date(tmp));
}
}
}
let minD = new Date(Date.now());
for (i of d) {
if (minD.valueOf() > i.valueOf()) {
minD = i;
}
}
return ('00' + (minD.getMonth() + 1)).slice(-2);
}
function main() {
//UTF-8
let basePath = "C:\\Users\\user\\OneDrive\\画像\\カメラ ロール\\";
//年ディレクトリ一覧取得
let dirList = fs.readdirSync(basePath, {
withFileTypes: true,
}).filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name);
//カメラロールの各フォルダ内
let yPath;
for (let i of dirList) {
//ファイル一覧取得
yPath = basePath + i + "\\";
let fileList = fs.readdirSync(yPath, {
withFileTypes: true,
}).filter(dirent => dirent.isFile()).map(dirent => dirent.name);
for (let f of fileList) {
let fPath = yPath + f;
let m = getMonthStr(fPath);
if (Number(m) > 0 && Number(m) <= 12) {
fs.rename(fPath, yPath + m + "\\" + f, (err) => {
if (err) throw err;
console.log('ファイルを移動しました :' + fPath);
});
}
}
}
}
main();

あ、各フォルダ内に月のフォルダ作った部分忘れた(最初に作った後は不要だったので)

//カメラロールの各フォルダ内に12ヶ月のフォルダを作成
let yPath;
for (let i = 0; i < dirList.length; i++) {
yPath = dirPath + "\\" + dirList[i] + "\\";
for (let m = 1; m <= 12; m++) {
fs.mkdir(yPath + ('00' + m).slice(-2), (err) => {
if (err) {
console.log(err.toString());
}
});
}
}

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です