找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30912|回复: 11

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

[复制链接]
发表于 2012-10-10 21:44:11 | 显示全部楼层 |阅读模式
如题:我有个文本内容为:FFFFFFFFFFFFFFFFFF0000000000    批处理运行后为:FF,FF,FF,FF,FF,FF,FF,FF,FF,00,00,00,00,00

每2个字符加个逗号

高手帮我写下代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-10-10 22:25:39 | 显示全部楼层
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-10-10 22:34:44 | 显示全部楼层

  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-10-11 10:21:58 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-10-11 19:12:06 | 显示全部楼层
  1. sed "s/../&,/g" a.txt | sed "s/,$//" >b.txt
复制代码
发表于 2012-10-11 19:31:05 | 显示全部楼层
尝试一下非传统的方法
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-10-11 22:44:14 | 显示全部楼层
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个办法  就可以达到我的要求
 楼主| 发表于 2012-10-11 23:03:08 | 显示全部楼层
谢谢大家帮我解决了问题  但有个新问题出来  又开请教大家啦!批处理怎样在一个文本16进制字符转换成10进制字符 弄个批处理2个问题能一起解决那就最好

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

高手帮我写下代码,谢谢啦
发表于 2012-10-11 23:18:20 | 显示全部楼层
回复 8# shchaoge


    还是用第三方吧,批处理的进制转换老麻烦了,需要每一位都单独处理、套公式
 楼主| 发表于 2012-10-11 23:25:09 | 显示全部楼层
回复  shchaoge


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



    呵呵  谢谢  我是个菜鸟   您能帮我找个第三方软件  再用批处理运行来解决
发表于 2012-10-12 00:01:46 | 显示全部楼层
回复 10# shchaoge


   抱歉 刚才我找了一下 没有找到,但愿其他会员能够帮助你,祝你好运!
 楼主| 发表于 2012-10-12 00:03:14 | 显示全部楼层
回复  shchaoge


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



    谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 15:18 , Processed in 0.022373 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表