Jestem całkiem nowy w używaniu JS, więc postaram się być tak konkretny, jak tylko potrafię :)
Mam folder z 260 .png plików z różnymi nazwami krajów:
Afghanistan.png
,Albania.png
,Algeria.png
, itd.Mam plik .json z fragmentem kodu ze wszystkimi kodami ISO dla każdego kraju w następujący sposób:
{ „AF”: „Afganistan”, „AL”: „Albania”, „DZ”: „Algieria”, ... }
- Chciałbym zmienić nazwy plików .png na ich nazwy ISO pisane małymi literami. Oznacza to, że chciałbym mieć następujący wkład w moim folderze z wszystkich
.png
obrazów:af.png
,al.png
,dz.png
, itd.
Próbowałem samodzielnie dowiedzieć się, jak to zrobić z node.js, ale jestem trochę zagubiony i bardzo bym docenił kilka wskazówek.
Z góry dziękuję!
źródło
const obj = require('/path/to/countries.json');
a następnie:for(var p in obj) {...}
require
wykonuje kod w tym pliku. Wprowadzasz sposób, aby ktoś mógł potencjalnie wstrzyknąć złośliwy kod do aplikacji (tj. Zmodyfikować plik .json). Czytanie i używanieJSON.parse()
całkowicie tego eliminuje. Nie narażaj bezpieczeństwa, by pisać niewiele mniej kodu.fs.renameSync(oldPath, newPath);
Iść przez
http://nodejs.org/api/fs.html
Jedna ważna rzecz - możesz również korzystać z funkcji synchronizacji. (Będzie działać jak program w C)
źródło
Do synchronicznej zmiany nazwy użyj fs.renameSync
fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');
źródło
W przypadku systemu Linux / unix można użyć składni powłoki
const shell = require('child_process').execSync ; const currentPath= `/path/to/name.png`; const newPath= `/path/to/another_name.png`; shell(`mv ${currentPath} ${newPath}`);
Otóż to!
źródło
fs.rename
?