Подтвердить что ты не робот

Переименование файлов с помощью node.js

Я новичок в использовании JS, поэтому я постараюсь быть настолько конкретным, насколько могу:)

  • У меня есть папка с 260 файлами .png с разными названиями стран: Afghanistan.png, Albania.png, Algeria.png и т.д.

  • У меня есть файл .json с фрагментом кода со всеми ISO-кодами для каждой страны:

{  
  "AF" : "Afghanistan",  
  "AL" : "Albania",  
  "DZ" : "Algeria",  
  ...  
}
  • Я хотел бы переименовать файлы .png со своим именем ISO в младшем. Это означает, что я хотел бы иметь следующий ввод в моей папке со всеми изображениями .png: af.png, al.png, dz.png и т.д.

Я пытался самостоятельно исследовать, как это сделать с помощью node.js, но я немного потерялся здесь, и я был бы признателен за некоторые подсказки.

Спасибо заранее!

4b9b3361

Ответ 1

Для этого вам нужно использовать fs: http://nodejs.org/api/fs.html

И, в частности, fs.rename():

var fs = require('fs');
fs.rename('/path/to/Afghanistan.png', '/path/to/AF.png', function(err) {
    if ( err ) console.log('ERROR: ' + err);
});

Поместите это в цикл над вашими недавно прочитанными ключами и значениями объекта JSON, и вы получите скрипт пакетного переименования.

fs.readFile('/path/to/countries.json', function(error, data) {
    if (error) {
        console.log(error);
        return;
    }

    var obj = JSON.parse(data);
    for(var p in obj) {
        fs.rename('/path/to/' + obj[p] + '.png', '/path/to/' + p + '.png', function(err) {
            if ( err ) console.log('ERROR: ' + err);
        });
    }
});

(Здесь предполагается, что ваш файл .json заслуживает доверия и что его ключи и значения можно безопасно использовать непосредственно в именах файлов. Если это не так, обязательно избегайте их правильно!)

Ответ 2

  • fs.readdir(путь, обратный вызов)
  • fs.rename(старый, новый, обратный вызов)

Пройдите http://nodejs.org/api/fs.html

Одна важная вещь - вы также можете использовать функции синхронизации. (Он будет работать как программа C)

Ответ 3

Для операционной системы Linux/Unix вы можете использовать синтаксис оболочки

const shell = require('child_process').execSync ; 

const currentPath= `/path/to/name.png`;
const newPath= `/path/to/another_name.png`;

shell(`mv ${currentPath} ${newPath}`);

Что это!

Ответ 4

Вопрос......

У меня есть файлы в папке с именами сотрудников. Я хотел бы создать сценарий Java в Adobe Pro, где сценарий добавляет файл name_ к текущему имени файла. Например, в настоящее время файлы сохраняются как 1234, но я бы хотел, чтобы java-скрипт переименовал файл в Resume_1234.

Может кто-нибудь помочь?

Ответ 5

Для синхронного переименования используйте fs.renameSync