脚本

lishihuan大约 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的文件目录

脚本