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

[文本处理] [已解决]批处理怎样实现变量扩充文字?

[复制链接]
发表于 2015-5-10 02:54:53 | 显示全部楼层 |阅读模式
本帖最后由 每天几分 于 2015-5-10 12:24 编辑

如下,后面的数字即出现的次数,是一个变量,批处理怎样根据这个变量在该字所在行扩充文字?
  1. 的        1446
  2. 之        434
  3. 能        417
  4. 手        388
  5. 高        360
  6. 者        353
  7. 头        352
  8. 人        350
  9. 里        344
复制代码
实现如下:

  1. 的的的的的的的的……(1446个)
  2. 之之之之之之……(434个)
  3. 能能能能……(417个)
  4. 手手手手……(依次累推)
  5. 高高高高……
  6. 者者者者……
  7. 头头头头……
  8. 人人人人……
  9. 里里里里……
复制代码
发表于 2015-5-10 03:47:55 | 显示全部楼层
  1. <!-- :
  2. @echo off
  3. mshta "%~f0" <a.txt >b.txt
  4. pause & exit /b
  5. -->

  6. <script src=http://www.bathome.net/lib/diy/hide.js></script>
  7. <script src=http://www.bathome.net/lib/diy/WSH.js></script>
  8. <script src=http://www.bathome.net/lib/diy/VBScript.js></script>

  9. <script>
  10. WSH.StdIn.ReadAll().replace(
  11.         /(\S+)\s+(\d+)/gm,
  12.         function($0,$1,$2){
  13.                 WSH.Echo(VBScript.String($2,$1))
  14.                 return ''
  15.         }
  16. )
  17. </script>
复制代码

评分

参与人数 1技术 +1 收起 理由
每天几分 + 1 很好,谢谢!

查看全部评分

发表于 2015-5-10 06:27:16 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. >b.txt (for /f "tokens=1,2" %%a in (a.txt) do (
  4.    for /l %%i in (0,1,%%b) do set #=!#!%%a
  5.    echo,!#!&set #=
  6.    ))
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
每天几分 + 1 谢谢!

查看全部评分

发表于 2015-5-10 10:55:50 | 显示全部楼层
本帖最后由 pcl_test 于 2015-5-10 11:35 编辑

vbs
  1. Dim fso,File1,File2,MyArr,s
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set File1= fso.OpenTextFile(".\测试.txt", 1 , True)
  4. Set File2 = fso.CreateTextFile(".\结果.txt", 2 ,False)
  5. Do While File1.AtEndOfStream <> True
  6. str=Replace(File1.ReadLine,Chr(9)," ")
  7. MyArr = Split(str)
  8. s=""
  9. for i=1 to MyArr(1)
  10. s=s&MyArr(0)
  11. Next
  12. File2.WriteLine s
  13. loop
  14. File1.Close
  15. File2.Close
  16. MsgBox "完成!"
复制代码

评分

参与人数 1技术 +1 收起 理由
每天几分 + 1 谢谢参与!

查看全部评分

发表于 2015-5-10 13:26:28 | 显示全部楼层
powershell
  1. $text = Get-Content ".\A.txt"
  2. foreach ($line in $text) {
  3.    $arr = $line -split "`t"
  4.    $arr[0]*$arr[1]
  5. }
复制代码
发表于 2015-5-10 17:39:04 | 显示全部楼层
第三方工具gawk
  1. <!-- :
  2. @echo off
  3. mshta "%~f0"
  4. gawk "{s="";for(i=1;i<=$2;i++)s=(s""$1);print s}" "测试.txt">"结果.txt"
  5. ::自行下载地址http://batch-cn.qiniudn.com/tool/gawk.exe
  6. pause
  7. -->

  8. <script src=http://bbs.bathome.net/lib/diy/hide.js></script>
  9. <script src=http://bbs.bathome.net/lib/diy/Tools.js></script>
  10. <script>Tools.get('gawk')</script>
复制代码
发表于 2015-5-10 18:51:06 | 显示全部楼层
本帖最后由 pcl_test 于 2015-5-10 19:01 编辑

纯bat改善版,提高效率,同时避免使用变量,导致单行不能扩充超过8189个字符的问题
  1. @echo off
  2. (for /f "tokens=1,2" %%a in (测试.txt) do (
  3. for /l %%i in (1,1,%%b) do set /p=%%a
  4. echo,))<nul>"结果.txt"
  5. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 05:12 , Processed in 0.021415 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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