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

[文本处理] 【已解决】批处理如何替换掉文本中指定位置的字符串?

[复制链接]
发表于 2015-12-2 09:52:44 | 显示全部楼层 |阅读模式
如何把一个字符串,复制到a.txt,要求从a.txt的第50个字符处开始复制并覆盖
其中a.txt只有一行字符(如附档):
  192.168.1.16 2015/11/23 21:34  1 2 1 7 0 4  1 f g 7 0 4  1 2 1 7 6 4 1 2 1 7 0 4  1                                                                                 
  如果要复制内容 为  reirong=这里有问题,请注意   (这个是输入的内容,字符长度不限)
复制后a.txt内容变为:
  192.168.1.16 2015/11/23 21:34  1 2 1 7 0 4  1 f 这里有问题,请注意6 4 1 2 1 7 0 4  1

咱语言水平真的很低啊,惭愧!

非常感谢大家的批评!

请热心朋友帮忙,谢谢!

评分

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

查看全部评分

发表于 2015-12-2 16:25:27 | 显示全部楼层
没看出来
  1. g 7 0 4  1 2 1 7 6 4
复制代码
  1. 这里有问题,请注意
复制代码
是怎么对应的
发表于 2015-12-2 19:21:43 | 显示全部楼层
自己学语言学正则表达式去。
 楼主| 发表于 2015-12-4 23:29:06 | 显示全部楼层
回复 2# 回家路上
类似如下,主要是从第50个字节开始覆盖复制
   192.168.1.16 2015/11/23 21:34  1 2 1 7 0 4  1 f g 7 0 4  1 2 1 7 6 4 1 2 1 7 0 4  1
   192.168.1.16 2015/11/23 21:34  1 2 1 7 0 4  1 f这里有问题,请注意6 4 1 2 1 7 0 4  1
多谢关注!
发表于 2015-12-5 00:01:34 | 显示全部楼层
本帖最后由 pcl_test 于 2015-12-5 01:42 编辑

回复 4# zrf0123

替换规则是什么?倒是要说清楚
1、只替换第一行的字符串?
2、从第50个字符开始替换,怎么替换?替换掉" g 7 0 4  1 2 1 7 "?
3、包括空格,“g 7 0 4  1 2 1 7 ”有17个字符,不包括空格则有8个字符,“这里有问题,请注意”有9个字符,让人如何理解?
4、样本呢?
发表于 2015-12-5 00:08:26 | 显示全部楼层
回复 5# pcl_test


    还是建议版规直接强制要求上传样本文件和例子文件好了。
很多问题根本不是他们的问题难。
发表于 2015-12-5 00:18:18 | 显示全部楼层
回复 6# 依山居


版规是早已明说了
 楼主| 发表于 2015-12-5 01:26:42 | 显示全部楼层
回复  zrf0123

替换规则是什么?倒是要说清楚
1、只替换第一行的字符串?
2、从第50个字符开始替换,怎 ...
pcl_test 发表于 2015-12-5 00:01


   1.只替换第一行
2.a.txt只有这一行内容,一般有150个左右的字符,需要替换的是从开始数起的第50字符以后
3.包括所有空格,"这里有问题,请注意"还可以是其它内容 ,请用一个输入变量表示  reirong=(输入内容)
4.这个样本只一行内容,见附件,注意空格也算原有内容

惊动了老大,阿
发表于 2015-12-5 12:09:51 | 显示全部楼层
  1. @set @a=0;/*&echo off & setlocal enabledelayedexpansion

  2. set /p line=<a.txt
  3. set idx=50
  4. set /p reirong=请输入要替换的字符串:
  5. if not defined reirong exit /b
  6. echo;第一行内容:%line%
  7. echo;替换字符串为:%reirong%
  8. echo;替换从第%idx%个字符开始
  9. for /f "delims=" %%i in ('cscript /nologo /e:jscript %0 "%line%" "%reirong%" "%idx%"') do (
  10.         echo;替换后【%%i】
  11. )

  12. pause & exit */

  13. var initStr = WScript.Arguments(0);
  14. var rep = WScript.Arguments(1);
  15. var idx = parseInt(WScript.Arguments(2));

  16. function replaceStr(initStr, rep, idx) {
  17.         return initStr.substring(0, idx) + rep + initStr.substring(idx + parseInt(rep.length))
  18. }
  19. WSH.Echo(replaceStr(initStr, rep, idx));
复制代码

评分

参与人数 1技术 +1 收起 理由
zrf0123 + 1 可以,非常感谢!

查看全部评分

发表于 2015-12-6 09:18:32 | 显示全部楼层
本帖最后由 terse 于 2015-12-6 09:33 编辑

少个变量
  1. @echo off
  2. set /p line=<a.txt
  3. set idx=50
  4. set /p s=请输入要替换的字符串:
  5. if not defined s exit /b
  6. setlocal enabledelayedexpansion
  7. set "str=!line:~,%idx%!!s!"
  8. set /aidx+=1
  9. for %%i in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
  10.     if "!s:~%%i!" neq "" set /a idx+=%%i&set "s=!s:~%%i!"
  11. )
  12. echo;!str!!line:~%idx%!
  13. pause
复制代码
 楼主| 发表于 2015-12-7 11:30:45 | 显示全部楼层
少个变量
terse 发表于 2015-12-6 09:18

变动代码后测试,会插入内容,不可,您可以再改下看看(注意空格也算字符)
@echo off
set /p line=<"E:\a.txt"
set idx=50
set /p s=请输入要替换的字符串:
if not defined s exit /b
setlocal enabledelayedexpansion
set "str=!line:~,%idx%!!s!"
set /aidx+=1
for %%i in ("E:\a.txt") do (
    if "!s:~%%i!" neq "" set /a idx+=%%i&set "s=!s:~%%i!"
)
echo;!str!!line:~%idx%!>"E:\a.txt"
发表于 2015-12-7 14:05:47 | 显示全部楼层
本帖最后由 terse 于 2015-12-7 14:45 编辑

回复 11# zrf0123
你变动的目的是什么 没看懂
是否想替换原文件
把12行代码改为
  1. >a.txt echo;!str!!line:~%idx%!
复制代码
 楼主| 发表于 2015-12-7 23:49:34 | 显示全部楼层
回复  zrf0123
你变动的目的是什么 没看懂
是否想替换原文件
把12行代码改为
terse 发表于 2015-12-7 14:05

还是不可,要求“覆盖”后其他空格字符不变,不是插入。
a.txt内容:
  192.168.1.16 2015/11/23 21:34  1 2 1 7 0 4  1 f 2 2 2 3 4 5 6 0 2  0 2 7 0 4  1 2 1 7 6 4 1 2 1 7 0 4                                                                                          
覆盖 test 后变为
  192.168.1.16 2015/11/23 21:34  1 2 1 7 0 4  1 ftest 2 3 4 5 6 0 2  0 2 7 0 4  1 2 1 7 6 4 1 2 1 7 0 4
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 09:00 , Processed in 0.021247 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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