月度归档:2024年09月

JS 中 数组转CSV保存

function downloadArrayAsCSV(array, filename) {
  // 检查输入是否为数组
  if (!Array.isArray(array)) {
    console.error('The provided data is not an array.');
    return;
  }

  // 如果数组为空,返回错误
  if (array.length === 0) {
    console.error('The array is empty.');
    return;
  }

  let headers = Object.keys(array[0]).map(header => `"${header}"`).join(',');

  const csv = [headers].concat(
    array.map(row => {
      return Object.values(row)
        .map(text => {
          // 替换字段中的双引号,并包裹在双引号中
          if (text instanceof Date) {
            return `"${text.toLocaleString()}"`;
          }
          if (typeof text === 'string') {
            return `"${text.replace(/"/g, '""')}"`;
          }
          return text;
        }).join(',');
    })
  ).join('\n');

  // 创建Blob对象
  const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });

  // 创建下载链接
  const link = document.createElement('a');
  link.href = URL.createObjectURL(blob);
  link.download = filename || 'data.csv';
  document.body.appendChild(link); // 将链接添加到页面中

  // 触发下载
  link.click();

  // 清理
  document.body.removeChild(link); // 移除链接
  URL.revokeObjectURL(link.href); // 释放URL
}

// 示例数组
const dataArray = [
  { name: 'Kimi', age: 30, city: 'Shanghai' },
  { name: 'Alice', age: 24, city: 'Beijing' }
];

// 调用函数
downloadArrayAsCSV(dataArray, 'myData.csv');

输入数组 和csv文件名即可完成

javascript中 JSON 转XML 保存XML

JSON转XML

// 定义一个函数,将JSON数据转换为XML字符串
function jsonToXml(json) {
  var xml = '';
  if (typeof json !== 'object') {
    xml = json === undefined ? '' : String(json);
  } else if (Array.isArray(json)) {
    for (var i = 0; i < json.length; i++) {
      xml += jsonToXml(json[i]);
    }
  } else {
    for (var key in json) {
      var value = json[key];
      var child = jsonToXml(value);
      if (typeof value === 'object') {
        xml += '<' + key + '>' + child + '</' + key + '>';
      } else {
        xml += '<' + key + '>' + escapeXml(child) + '</' + key + '>';
      }
    }
  }
  return xml;
}

// 转义XML字符串中的特定字符
function escapeXml(text) {
  return text.replace(/&/g, '&amp;')
             .replace(/</g, '&lt;')
             .replace(/>/g, '&gt;')
             .replace(/"/g, '&quot;')
             .replace(/'/g, '&apos;');
}

XML保存文件到本地


// 转换JSON为XML
var xmlData = '<?xml version="1.0" encoding="UTF-8"?>' +
              '<root>' + jsonToXml(jsonData) + '</root>';

// 创建Blob对象
var blob = new Blob([xmlData], { type: 'application/xml' });

// 创建下载链接
var downloadLink = document.createElement("a");
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "n.xml";

// 触发下载
downloadLink.click();

// 清理资源
URL.revokeObjectURL(downloadLink.href);
downloadLink.remove();

整合成一个方法,输入JSON数据 和xml文件名 就可以下载

// 定义一个函数,将JSON数据转换为XML字符串
function jsonToXml(json) {
  var xml = '';
  if (typeof json !== 'object') {
    xml = json === undefined ? '' : String(json);
  } else if (Array.isArray(json)) {
    for (var i = 0; i < json.length; i++) {
      xml += jsonToXml(json[i]);
    }
  } else {
    for (var key in json) {
      var value = json[key];
      var child = jsonToXml(value);
      if (typeof value === 'object') {
        xml += '<' + key + '>' + child + '</' + key + '>';
      } else {
        xml += '<' + key + '>' + escapeXml(child) + '</' + key + '>';
      }
    }
  }
  return xml;
}

// 转义XML字符串中的特定字符
function escapeXml(text) {
  return text.replace(/&/g, '&amp;')
             .replace(/</g, '&lt;')
             .replace(/>/g, '&gt;')
             .replace(/"/g, '&quot;')
             .replace(/'/g, '&apos;');
}

// 定义一个函数,接受JSON数据和文件名,下载JSON数据为XML文件
function downloadJsonAsXml(jsonData, fileName) {
  // 转换JSON为XML
  var xmlData = '<?xml version="1.0" encoding="UTF-8"?>' +
                '<root>' + jsonToXml(jsonData) + '</root>';

  // 创建Blob对象
  var blob = new Blob([xmlData], { type: 'application/xml' });

  // 创建下载链接
  var downloadLink = document.createElement("a");
  downloadLink.href = URL.createObjectURL(blob);
  downloadLink.download = fileName;

  // 触发下载
  downloadLink.click();

  // 清理资源
  URL.revokeObjectURL(downloadLink.href);
  downloadLink.remove();
}

// 假设这是你的JSON数据
var jsonData = {
  "greeting": "Hello",
  "subject": "World"
};

// 调用函数,下载JSON数据为XML文件
downloadJsonAsXml(jsonData, "n.xml");

SMB拷贝到另一个目录SMB xcopy 备份【windows 运维】

@echo off
set sourceDir=D:\faa
set destDir=\\192.168.1.165\scan

echo 正在将文件从 %sourceDir% 拷贝到 %destDir% ...

xcopy "%sourceDir%\*" "%destDir%\" /E /I /D /Y

echo 拷贝完成。

将A机器的D盘中faa文件夹拷贝到\\192.168.1.165\scan

借助windows定时任务可以做到定时拷贝(一天一次 深夜执行)

这里是命令参数的解释:

/E 表示复制目录和子目录,包括空目录。
/I 表示如果目标不存在,假定它是一个目录。
/D 若文件更新才复制(适用于增量备份)
/Y 表示覆盖现有目标文件而不提示。