[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

每2个字符加个逗号

高手帮我写下代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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" 即可、
1

评分人数

求老大赐我《精通正则表达式》

TOP

  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. )
复制代码
1

评分人数

TOP

本帖最后由 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代码有错误,已修正
1

评分人数

TOP

  1. sed "s/../&,/g" a.txt | sed "s/,$//" >b.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

尝试一下非传统的方法
  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. )
复制代码
1

评分人数

TOP

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个办法  就可以达到我的要求

TOP

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

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

高手帮我写下代码,谢谢啦

TOP

回复 8# shchaoge


    还是用第三方吧,批处理的进制转换老麻烦了,需要每一位都单独处理、套公式

TOP

回复  shchaoge


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



    呵呵  谢谢  我是个菜鸟   您能帮我找个第三方软件  再用批处理运行来解决

TOP

回复 10# shchaoge


   抱歉 刚才我找了一下 没有找到,但愿其他会员能够帮助你,祝你好运!

TOP

回复  shchaoge


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



    谢谢

TOP

返回列表