Board logo

标题: [代码合集] [已解决]批处理怎样在一个文本上每2个字符加个逗号? [打印本页]

作者: shchaoge    时间: 2012-10-10 21:44     标题: [已解决]批处理怎样在一个文本上每2个字符加个逗号?

如题:我有个文本内容为:FFFFFFFFFFFFFFFFFF0000000000    批处理运行后为:FF,FF,FF,FF,FF,FF,FF,FF,FF,00,00,00,00,00

每2个字符加个逗号

高手帮我写下代码
作者: 乱码    时间: 2012-10-10 22:25

  1. var file = "text.txt";
  2. var fso = new ActiveXObject("scripting.filesystemobject");
  3. var str = fso.OpenTextFile(file,1).ReadAll().replace(/(..)(?!$)/gm,'$1,');
  4. fso.OpenTextFile(file,2).Write(str);
  5. WSH.echo("OK");
复制代码
保存为 "处理.js" 双击运行即可、
如果js无法运行,保存为 "处理.jse" 即可、
作者: QIAOXINGXING    时间: 2012-10-10 22:34

  1. @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
  2. set "str=FFFFFFFFFFFFFFFFFF0000000000"
  3. for /l %%a in (0 2 100) do (
  4.   if not "!str:~%%a,2!" == "" (
  5.     set /p nstr=!str:~%%a,2!,<nul
  6.   ) else (
  7.     echo;&pause&exit
  8.   )
  9. )
复制代码

作者: apang    时间: 2012-10-11 10:21

本帖最后由 apang 于 2012-10-12 09:41 编辑

源文件a.txt,输出文件b.txt
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.   set "str=%%a"
  4.   setlocal enabledelayedexpansion
  5.   call :11
  6.   echo,!a:~1!&endlocal
  7. ))>b.txt
  8. goto :eof
  9. :11
  10. if not "!str:~%n%!"=="" set "a=!a!,!str:~%n%,2!"&set/a n+=2&goto :11
复制代码
vbs,学习2楼乱码大侠的:
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set File = FSO.OpenTextFile("a.txt",1)
  3. Set Re = New RegExp
  4. Re.Pattern = "(..)(?!$)"
  5. Re.Global=True
  6. Re.MultiLine = True
  7. Str = Re.Replace(File.ReadAll,"$1,")
  8. FSO.CreateTextFile("b.txt",True).Write(Str)
复制代码
Sorry,bat代码有错误,已修正
作者: Batcher    时间: 2012-10-11 19:12

  1. sed "s/../&,/g" a.txt | sed "s/,$//" >b.txt
复制代码

作者: poter    时间: 2012-10-11 19:31

尝试一下非传统的方法
  1. @ECHO OFF
  2. Setlocal enableDelayedExpansion
  3. for /f "tokens=*" %%i in ("FFFFFFFFFFFFFFFFFF0000000000") do (
  4. set str=%%i&set str=!str:F=F !&set str=!str:0=0 !
  5. for %%j in (!str!) do (
  6. set /a a+=1&set /a b=!a!%%2
  7. if !b!==1 set str2=!str2!%%j
  8. if !b!==0 set str2=!str2!%%j,
  9. )
  10. echo !str2!
  11. )
复制代码

作者: shchaoge    时间: 2012-10-11 22:44

var file = "text.txt";

var fso = new ActiveXObject("scripting.filesystemobject");

var str = fso.OpenTextFile(file,1).ReadAll().replace(/(..)(?!$)/gm,'$1,');

fso.OpenTextFile(file,2).Write(str);

WSH.echo("OK");
复制代码保存为 "处理.js" 双击运行即可、
如果js无法运行,保存为 "处理.jse" 即可、


@echo off
(for /f "delims=" %%a in (a.txt) do (
  set "str=%%a"
  setlocal enabledelayedexpansion
  call :11
  echo,!a:~1!&endlocal
))>b.txt
goto :eof

:11
set /a n+=2
if not "!str:~%n%!"=="" set "a=!a!,!str:~%n%,2!"&goto :11


谢谢大家  用这2个办法  就可以达到我的要求
作者: shchaoge    时间: 2012-10-11 23:03

谢谢大家帮我解决了问题  但有个新问题出来  又开请教大家啦!批处理怎样在一个文本16进制字符转换成10进制字符 弄个批处理2个问题能一起解决那就最好

如题:我有个文本内容为:515253545556575859606162    批处理运行后为:333435363738393A3B3C3D3E

高手帮我写下代码,谢谢啦
作者: poter    时间: 2012-10-11 23:18

回复 8# shchaoge


    还是用第三方吧,批处理的进制转换老麻烦了,需要每一位都单独处理、套公式
作者: shchaoge    时间: 2012-10-11 23:25

回复  shchaoge


    还是用第三方吧,批处理的进制转换老麻烦了,需要每一位都单独处理、套公式
poter 发表于 2012-10-11 23:18



    呵呵  谢谢  我是个菜鸟   您能帮我找个第三方软件  再用批处理运行来解决
作者: poter    时间: 2012-10-12 00:01

回复 10# shchaoge


   抱歉 刚才我找了一下 没有找到,但愿其他会员能够帮助你,祝你好运!
作者: shchaoge    时间: 2012-10-12 00:03

回复  shchaoge


   抱歉 刚才我找了一下 没有找到,但愿其他会员能够帮助你,祝你好运!
poter 发表于 2012-10-12 00:01



    谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2