标题: 【求助】(可能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);
}