网上已有的文本格式转换工具 dos2unix,用 aardio 也能很轻松的实现(参考 aardio IDE 自带范例:范例程序/文件操作/批量操作/替换文本.aardio
)
运行截图
代码实现
1、接收用户参数
aardio 程序接收参数用 _ARGV,先看效果图:
标注③、④、⑤为用户传入的参数,以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();
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
- 最新
- 最热
只看作者