Board logo

标题: 【求助】(可能P不行,等vbs终结者slore来解决)特殊换行 [打印本页]

作者: kioskboy     时间: 2009-4-6 04:26    标题: 【求助】(可能P不行,等vbs终结者slore来解决)特殊换行

求一bat或vbs脚本或其它脚本(不用sed也行,我写的bat很丑,而且碰到"就ge了)
如有一个文本文件1.txt
想用sed处理后,生成1_new.txt

即使1.txt中如有哪行超过100个汉字(主要是汉字,字母和符号谁便,1个最多应该相当于一个汉字吧),后面的的则另起一行,一直到少于100子则可。
若一行没有超过100个字符的,不动,即1.txt中该行前面有超过100字符的行,不会挤到前面来

[ Last edited by kioskboy on 2009-4-7 at 22:26 ]
作者: haidao123     时间: 2009-4-6 07:06
ding
作者: yishanju     时间: 2009-4-6 08:08
这意思是超一百字的行,每一百字拆多行?
作者: kioskboy     时间: 2009-4-6 08:29

谁有答案没,有的话贴一下
在线等。。。。
快要睡觉了。。。

[ Last edited by kioskboy on 2009-4-6 at 09:37 ]
作者: yishanju     时间: 2009-4-6 10:43
-_-看样子是比较难滴
作者: kioskboy     时间: 2009-4-8 11:09
真的吗
如过用sed或awk做,难在哪里呢
等这用,用什么脚本解决都可以
作者: moniuming     时间: 2009-4-8 11:27
sed不支持中文,如果只是要100个字符的话,set就可以了...
作者: kioskboy     时间: 2009-4-8 11:33
那就麻烦用set帮我整整吧
作者: moniuming     时间: 2009-4-8 12:17

@echo off
set codes=100
(
for /f "delims=" %%a in (1.txt) do (
  set str=%%a
  Setlocal Enabledelayedexpansion
  call :lp
  endlocal
)
)>1_new.txt
start "" "1_new.txt"
goto :eof
:lp
set/p=!str:~0,%codes%!<nul
echo.
if not "!str:~%codes%!"=="" (
  set str=!str:~%codes%!
  goto :lp
)
goto :eof

作者: netbenton     时间: 2009-4-8 13:19
@echo off

(for /f "delims=" %%a in (1.txt) do (
  set str=%%a
  Setlocal Enabledelayedexpansion
   for /l %%i in (1,1,92) do (
        if defined str (
            echo.!str:~0,100!
            set "str=!str:~100!"
        )
    )
    endlocal
))>a.txt
start a.txt

[ Last edited by netbenton on 2009-4-8 at 11:21 ]
作者: slore     时间: 2009-4-9 01:52
最好上传个样本。

这个要求一般会点VBS的都可以解决的。。。
作者: freeants001     时间: 2009-4-9 03:35
//我也来贴个JS脚本
if(WScript.arguments.length!=1){
    WScript.echo("请拖动要转换的文本文件到该脚本的图标上!\n\n"
                 +"或直接在命令行下输入参数!");
    WScript.quit();
}
doConverting(WScript.arguments(0));

function doConverting(File_Path){
    var fso=new ActiveXObject("scripting.filesystemobject");
    try{
        //备份文件
        fso.CopyFile(File_Path,File_Path+".bak");
        var fl=fso.opentextfile(File_Path,1);
        var sss=fl.readall();
    }catch(err){
        WScript.quit();
    }
    var fl=fso.opentextfile(File_Path,2);
   
    //把下面的数字100改为相应的数值即可控制每行字数
    //如把“{100}”改为“{50}”,即每行50字
    sss=sss.replace(/(.{100})/mg,"$1\r\n");
    fl.write(sss);
}