Board logo

标题: [文本处理] [已解决]批处理怎样实现变量扩充文字? [打印本页]

作者: 每天几分    时间: 2015-5-10 02:54     标题: [已解决]批处理怎样实现变量扩充文字?

本帖最后由 每天几分 于 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. 里里里里……
复制代码

作者: CrLf    时间: 2015-5-10 03:47

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

作者: yangfengoo    时间: 2015-5-10 06:27

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

作者: pcl_test    时间: 2015-5-10 10:55

本帖最后由 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 "完成!"
复制代码

作者: terse    时间: 2015-5-10 13:26

powershell
  1. $text = Get-Content ".\A.txt"
  2. foreach ($line in $text) {
  3.    $arr = $line -split "`t"
  4.    $arr[0]*$arr[1]
  5. }
复制代码

作者: pcl_test    时间: 2015-5-10 17:39

第三方工具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>
复制代码

作者: pcl_test    时间: 2015-5-10 18:51

本帖最后由 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
复制代码





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