脚本
大约 3 分钟
脚本
读取本地文件/写入本地文件
读取本地tet文件,当前是以 下面的 【编码表】 作为demo
import { promises as fsPromises } from 'fs';
// 1. 读取本地文件
async function getRegionMap(filePath) {
try {
const data = await fsPromises.readFile(filePath, 'utf8');
return data
} catch (error) {
console.error('Error reading file:', error);
throw error;
}
}
const filePath = '../other/国内地区代码表.txt'; // 将这里替换为你的实际文件路径
// 读取本地文件
getRegionMap(filePath).then(regionMap => {
//console.log(JSON.stringify(regionMap));
// 2. 将对象转换为字符串后写入文件
fsPromises.writeFile('国内地区代码表.txt', JSON.stringify(regionMap)).then(() => {
console.log('结果已写入 国内地区代码表.txt 文件。');
}).catch(error => {
console.error('写入文件错误:', error);
});
}).catch(error => {
console.error('An error occurred:', error);
});
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
function generateMenus(dirPath, prefix = '') {
const files = fs.readdirSync(dirPath);
let menus = '';
files.forEach((file) => {
const filePath = path.join(dirPath, file);
const isDirectory = fs.statSync(filePath).isDirectory();
if (isDirectory) {
menus += `${prefix}├─ ${file}\n`;
menus += generateMenus(filePath, `${prefix}│ `);
} else if (path.extname(file) === '.md') {
menus += `${prefix}├─ ${path.basename(file, '.md')}\n`;
}
});
return menus;
}
const currentUrl = import.meta.url;
const currentPath = fileURLToPath(currentUrl);
const currentDir = path.dirname(currentPath);
const dirPath = path.resolve(currentDir, '..', 'notes', 'src');
const outputPath = path.resolve(currentDir, 'menu.txt');
const menus = generateMenus(dirPath);
fs.writeFileSync(outputPath, menus);
console.log(`菜单已生成并保存到 ${outputPath}`);
身份证号生成
中国的身份证号由18位数字组成,格式如下:
- 前6位:地址码(表示编码对象常住户口所在县(市、旗、区)的行政区划代码)
- 第7到14位:出生日期码(表示编码对象出生的年、月、日,格式为YYYYMMDD)
- 第15到17位:顺序码(表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,奇数分配给男性,偶数分配给女性)
- 第18位:校验码(用于校验前17位数字的正确性)
node getIDCards.js 5
function generateRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateIdCardNumber(count) {
const regionCodes = [110000, 120000, 130000, 140000, 150000, 210000, 220000, 230000, 310000, 320000, 330000, 340000, 350000, 360000, 370000, 410000, 420000, 430000, 440000, 450000, 460000, 500000, 510000, 520000, 530000, 540000, 610000, 620000, 630000, 640000, 650000];
const idCards = [];
for (let i = 0; i < count; i++) {
const regionCode = regionCodes[generateRandomNumber(0, regionCodes.length - 1)];
const birthYear = generateRandomNumber(1950, 2023);
const birthMonth = generateRandomNumber(1, 12).toString().padStart(2, '0');
const birthDay = generateRandomNumber(1, 28).toString().padStart(2, '0');
const sequenceNumber = generateRandomNumber(100, 999);
let checksum = 0;
const idNumber = `${regionCode}${birthYear}${birthMonth}${birthDay}${sequenceNumber}`;
for (let j = 0; j < 17; j++) {
checksum += parseInt(idNumber.charAt(j)) * (2 ** (17 - j) % 11);
}
const checksumCode = (12 - (checksum % 11)) % 11;
const checksumValue = checksumCode === 10? 'X' : checksumCode.toString();
idCards.push(`${idNumber}${checksumValue}`);
}
return idCards;
}
const args = process.argv.slice(2);
const count = args.length > 0? parseInt(args[0]) : 1;
const idCards = generateIdCardNumber(count);
idCards.forEach(idCard => console.log(idCard));
地区编码表
import { promises as fsPromises } from 'fs';
async function generateRegionMapFromFile(filePath) {
try {
const data = await fsPromises.readFile(filePath, 'utf8');
const lines = data.split('\n');
const regionMap = {};
lines.forEach(line => {
if (line.trim() !== '') {
const parts = line.split(' ');
if (parts.length === 2) {
regionMap[parts[0]] = parts[1].replace('\r', '')
}
}
});
return regionMap;
} catch (error) {
console.error('Error reading file:', error);
throw error;
}
}
const filePath = '../other/国内地区代码表.txt'; // 将这里替换为你的实际文件路径
generateRegionMapFromFile(filePath).then(regionMap => {
//console.log(JSON.stringify(regionMap));
// 将对象转换为字符串后写入文件
fsPromises.writeFile('国内地区代码表.txt', JSON.stringify(regionMap)).then(() => {
console.log('结果已写入 国内地区代码表.txt 文件。');
}).catch(error => {
console.error('写入文件错误:', error);
});
}).catch(error => {
console.error('An error occurred:', error);
});
const fs = require('fs');
function generateRegionMapFromFile(filePath) {
const data = fs.readFileSync(filePath, 'utf8');
const lines = data.split('\n');
const regionMap = {};
lines.forEach(line => {
if (line.trim()!== '') {
const [code, name] = line.split(' ');
regionMap[code] = name;
}
});
return regionMap;
}
const filePath = 'your_txt_file_path.txt'; // 将这里替换为你的实际文件路径
const regionMap = generateRegionMapFromFile(filePath);
console.log('const regionMap = {');
Object.entries(regionMap).forEach(([code, name]) => {
console.log(` ${code}: '${name}',`);
});
console.log('};');
遍历文件目录,生成目录文件
目前生成vuepress的文件目录