【aardio实战】文本格式转换-unix2dos-文件操作、批量处理论坛-aardio-阿甘软件

【aardio实战】文本格式转换-unix2dos

网上已有的文本格式转换工具 dos2unix,用 aardio 也能很轻松的实现(参考 aardio IDE 自带范例:范例程序/文件操作/批量操作/替换文本.aardio

运行截图

dos2unix

 

代码实现

1、接收用户参数

aardio 程序接收参数用 _ARGV,先看效果图:

image

标注③、④、⑤为用户传入的参数,以table的形式保存,非常方便程序取用其中的数据,个人最喜欢标注⑤这一部分。

2、替换文件内容

见 aardio IDE 范例:范例程序/文件操作/批量操作/替换文本.aardio

//替换文本
import console;
import fsys.batch;

fsys.batch("/","*.aardio").enumText(
  function(text,codepage,fullpath){ 
    var text,count = string.replace(text,"@查找字符串","替换字符串");
    if(count){
      return text,codepage;
    } 
  } 
)
console.pause();

3、全部代码

import console;
import fsys.batch;
/*【注意:由于此程序是基于原始文件进行格式转换,所以请注意数据备份!】
  程序名:xxx.exe
  使用方法:xxx.exe -d 待转换格式的文件路径 -f 指定文件类型 -to 转换后的格式
  使用示例:xxx.exe -d C:\Desktop\something -f *.txt -to unix
  备注:双击 xxx.exe 默认转换当前路径下所有 txt 文件为 unix 格式。
*/

TIMES = 0; //进行格式转换的文件数量
_ARG_DIR = _ARGV.d ? _ARGV.d : "C:\Users\Administrator\Desktop\文件格式转换";
_ARG_FILE = _ARGV.f ? _ARGV.f : "*.txt";
_ARG_TARGET_FORMAT = _ARGV.to ? _ARGV.to : "unix";

var go_transform = function(){
  fsys.batch(_ARG_DIR, _ARG_FILE).enumText(
    function(text,codepage,fullpath){ 
      _dos = "111";
      _mac = "010";
      _unix = "001";
      var get_current_file_format = function(){
        var is_dos = string.find(text,'\r\n') ? 1 : 0;
        var is_mac = string.find(text, '\r') ? 1 : 0;
        var is_unix = string.find(text, '\n') ? 1 : 0;
        return is_dos ++ is_mac ++ is_unix;
      }
      
      //转换为 dos 格式
      var transform_to_dos = function(){
        select(get_current_file_format()) {
          case _mac {//macintosh
            TIMES++;
            console.log("mac", fullpath);
            var text,count = string.replace(text,'\r', '\r\n');
            return {text=text, count=count}; 
          }
          case _unix {//unix
            TIMES++;
            console.log("unix", fullpath);
            var text,count = string.replace(text,'\n', '\r\n');
            return {text=text, count=count}; 
          }
          else {return;}
        }
      }
      
      //转换为 mac 格式
      var transform_to_mac = function(){
        select(get_current_file_format()) {
          case _dos {//dos
            TIMES++;
            console.log("dos", fullpath);
            var text,count = string.replace(text,'\r\n', '\r');
            return {text=text, count=count}; 
          }
          case _unix {//unix
            TIMES++;
            console.log("unix", fullpath);
            var text,count = string.replace(text,'\n', '\r');
            return {text=text, count=count}; 
          }
          else {return;}
        }
      }
      
      //转换为 unix 格式
      var transform_to_unix = function(){
        select(get_current_file_format()) {
          case _dos {//dos
            TIMES++;
            console.log("dos3", fullpath);
            var text,count = string.replace(text,'\r\n', '\n');
            return {text=text, count=count}; 
          }
          case _mac {//macintosh
            TIMES++;
            console.log("mac3", fullpath);
            var text,count = string.replace(text,'\r', '\n');
            return {text=text, count=count}; 
          }
          else {return;}
        }
      }
      
      //start
      select(_ARG_TARGET_FORMAT) {
        case "dos" {
          var result = transform_to_dos();
          if(result and result.count){
            return result.text, 0;
          }
        }
        case "mac" {
          var result = transform_to_mac();
          if(result and result.count){
            return result.text, 0;
          }
        }
        case "unix" {
          var result = transform_to_unix();
          if(result and result.count)
            return result.text, 0;
        }
      }
    } 
  )  
}

if(_ARGV.to == "dos" or _ARGV.to == "mac" or _ARGV.to == "unix"){
  go_transform();

  if(0 == TIMES){
    console.log("路径 ["+ _ARG_DIR +"] 下无非 ["+ _ARG_TARGET_FORMAT +"] 格式的 ["+ _ARG_FILE +"] 文件!");
  }
  else {
    console.log("共修改 ["+ TIMES + "] 个 ["+ _ARG_FILE +"] 文件,已转换为 ["+ _ARG_TARGET_FORMAT +"] 格式。")
  }
}
else{
  console.log("目标格式仅支持:dos、unix、mac")
}
console.pause();
请登录后发表评论

    没有回复内容