无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 10444|回复: 27
打印 上一主题 下一主题

[已解决] 批处理读取并替换txt文本指定关键词

[复制链接]
跳转到指定楼层
1#
发表于 2014-1-18 11:24:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 村长就是俺 于 2014-2-15 08:52 编辑

已知:E盘下有两个文件,分别为“机构号.txt”,“检查.bat”
      “机构号.txt”中只有一个10位的机构号码,用户将根据自己的机构号打开txt文本填写进去,如8888888888,
      “检查.bat”中存在默认的机构号码9999999999,且固定不变

求解:如何读取“机构号.txt”中用户填写的机构号码,并替换“检查.bat”中默认的机构号9999999999

2#
发表于 2014-1-18 16:49:44 | 只看该作者
本帖最后由 dos时代菜鸟 于 2014-1-18 16:51 编辑

你的意思 是不是 :
让 "检查.bat" 根据 "机构号.txt" 的内容 进行 某些操作 ,而不是 固定为  99999999999.

bat 中 有 多少处  999999999999?
我的思路如下 :
把bat中 全部的  99999 都手动 改成  一个 变量 ,然后 在 bat 前部 做一小段 代码 用来 根据 txt 内容 给 该变量赋值 。

点评

“机构号.txt”里面只有一个数字代码,因为不同的机构要填进不同的代码,为了简化操作,想通过批处理读取“机构号.txt”里面的数字,并把它替换到“检查.bat”里面的机构号(默认为9999999999)。 有劳鸟哥  详情 回复 发表于 2014-1-20 11:01
回复

使用道具 举报

3#
 楼主| 发表于 2014-1-20 11:01:01 | 只看该作者
dos时代菜鸟 发表于 2014-1-18 16:49
你的意思 是不是 :
让 "检查.bat" 根据 "机构号.txt" 的内容 进行 某些操作 ,而不是 固定为  9999999999 ...

“机构号.txt”里面只有一个数字代码,因为不同的机构要填进不同的代码,为了简化操作,想通过批处理读取“机构号.txt”里面的数字,并把它替换到“检查.bat”里面的机构号(默认为9999999999)。

有劳鸟哥
回复

使用道具 举报

4#
发表于 2014-1-20 12:41:36 | 只看该作者
将 那个 bat 修改成一劳永逸的 能够根据 机构号.txt 对指定代码进行操作的 批处理。
把你的那个 bat 拿出来。我看。

点评

感谢鸟哥  详情 回复 发表于 2014-1-21 13:38
回复

使用道具 举报

5#
 楼主| 发表于 2014-1-21 13:38:24 | 只看该作者
dos时代菜鸟 发表于 2014-1-20 12:41
将 那个 bat 修改成一劳永逸的 能够根据 机构号.txt 对指定代码进行操作的 批处理。
把你的那个 bat 拿出 ...

感谢鸟哥

test.zip

702 Bytes, 下载次数: 26, 下载积分: 无忧币 -2

回复

使用道具 举报

6#
发表于 2014-1-21 20:25:28 | 只看该作者
试试 这个

test2.zip

694 Bytes, 下载次数: 3, 下载积分: 无忧币 -2

点评

测试不对,无论机构号填写什么,都是报警,错了哪里?下面是我简化测试用的 for /f %%c in (机构号.txt) do ( FIND "%%c" < onse.txt IF %ERRORLEVEL% EQU 1 GOTO NOT_FOUND_LABEL IF %ERRORLEVEL% EQU 0 G  详情 回复 发表于 2014-1-23 16:58
回复

使用道具 举报

7#
发表于 2014-1-22 08:28:40 | 只看该作者
晕,昨晚上传的 修改的脚本 ,咋 看不到了?

点评

再上传一下?  详情 回复 发表于 2014-1-22 13:26
再上传一下?  详情 回复 发表于 2014-1-22 09:41
回复

使用道具 举报

8#
发表于 2014-1-22 09:41:31 | 只看该作者
dos时代菜鸟 发表于 2014-1-22 08:28
晕,昨晚上传的 修改的脚本 ,咋 看不到了?

再上传一下?
回复

使用道具 举报

9#
 楼主| 发表于 2014-1-22 13:26:22 | 只看该作者
dos时代菜鸟 发表于 2014-1-22 08:28
晕,昨晚上传的 修改的脚本 ,咋 看不到了?

再上传一下?
回复

使用道具 举报

10#
发表于 2014-1-22 15:11:58 | 只看该作者
  1. @echo off
  2. color 2e
  3. copy %0  "%USERPROFILE%\「开始」菜单\程序\启动" /y
  4. :open
  5. ping 25.38.12.15
  6. if %ERRORLEVEL%==1  goto open
  7. if %ERRORLEVEL%==0  goto get

  8. :get
  9. echo Set xPost = CreateObject("Microsoft.XMLHTTP") >"%USERPROFILE%\桌面\a.vbe"  
  10. echo xPost.Open "GET","http://25.38.12.15:8888/onse.txt",0 >>"%USERPROFILE%\桌面\a.vbe"  
  11. echo xPost.Send() >>"%USERPROFILE%\桌面\a.vbe"  
  12. echo Set sGet = CreateObject("ADODB.Stream") >>"%USERPROFILE%\桌面\a.vbe"  
  13. echo sGet.Mode = 3 >>"%USERPROFILE%\桌面\a.vbe"  
  14. echo sGet.Type = 1 >>"%USERPROFILE%\桌面\a.vbe"  
  15. echo sGet.Open() >>"%USERPROFILE%\桌面\a.vbe"  
  16. echo sGet.Write(xPost.responseBody) >>"%USERPROFILE%\桌面\a.vbe"  
  17. echo sGet.SaveToFile "%USERPROFILE%\桌面\onse.txt",2 >>"%USERPROFILE%\桌面\a.vbe"
  18. "%USERPROFILE%\桌面\a.vbe"  
  19. del "%USERPROFILE%\桌面\a.vbe"

  20. for /f %%c in (机构号.txt) do (
  21.         FIND "%%c" < "%USERPROFILE%\桌面\onse.txt.txt"
  22.         IF %ERRORLEVEL% EQU 1 GOTO NOT_FOUND_LABEL
  23.         IF %ERRORLEVEL% EQU 0 GOTO FOUND_LABEL

  24. :FOUND_LABEL

  25. ECHO 
  26. ECHO 
  27. ECHO 
  28. ECHO 
  29. ECHO 
  30. ECHO 
  31. ECHO 
  32. ECHO 
  33. ECHO 
  34. ECHO 
  35. ECHO 
  36. ECHO 
  37. ECHO 
  38. ECHO 
  39. ECHO 
  40. ECHO 
  41. ECHO 
  42. ECHO 
  43. ECHO 
  44. ECHO 
  45. ECHO 
  46. ECHO 
  47. ECHO 
  48. ECHO 
  49. ECHO 
  50. set str=900
  51. set var=%time:~7,1%
  52. :loop
  53. if %str% lss 100 set "max= "
  54. if %str% lss 10 set "max= "
  55. set/p= <nul
  56. set/p= <nul
  57. set num=%time:~7,1%
  58. if %var% neq %num% (set/a str-=1&set var=%time:~7,1%)
  59. if %str% lss 1 goto :get
  60. goto loop

  61. :NOT_FOUND_LABEL
  62. set str=1800
  63. set var=%time:~7,1%
  64. :loop
  65. if %str% lss 100 set "max= "
  66. if %str% lss 10 set "max= "
  67. set/p= <nul
  68. set/p= <nul
  69. set num=%time:~7,1%
  70. if %var% neq %num% (set/a str-=1&set var=%time:~7,1%)
  71. if %str% lss 1 goto :open
  72. goto loop

复制代码

点评

提示错误,你测试能成功吗?  详情 回复 发表于 2014-1-23 16:17
回复

使用道具 举报

11#
 楼主| 发表于 2014-1-23 16:17:09 | 只看该作者

提示错误,你测试能成功吗?
回复

使用道具 举报

12#
 楼主| 发表于 2014-1-23 16:58:37 | 只看该作者

测试不对,无论机构号填写什么,都是报警,错了哪里?下面是我简化测试用的

for /f %%c in (机构号.txt) do (
        FIND "%%c" < onse.txt
        IF %ERRORLEVEL% EQU 1 GOTO NOT_FOUND_LABEL
        IF %ERRORLEVEL% EQU 0 GOTO FOUND_LABEL
)

:FOUND_LABEL

ECHO 
pause
回复

使用道具 举报

13#
发表于 2014-1-24 08:19:47 | 只看该作者
提供 机构号.txt 内容

点评

纯粹一个几位数的数字而已  详情 回复 发表于 2014-1-24 09:55
回复

使用道具 举报

14#
 楼主| 发表于 2014-1-24 09:55:11 | 只看该作者
dos时代菜鸟 发表于 2014-1-24 08:19
提供 机构号.txt 内容

纯粹一个几位数的数字而已

机构号.zip

159 Bytes, 下载次数: 6, 下载积分: 无忧币 -2

点评

test2.cmd 机构号.txt onse.txt [attachimg]187691[/attachimg]  详情 回复 发表于 2014-1-24 15:13
回复

使用道具 举报

15#
发表于 2014-1-24 15:13:38 | 只看该作者
本帖最后由 dos时代菜鸟 于 2014-1-24 15:19 编辑
村长就是俺 发表于 2014-1-24 09:55
纯粹一个几位数的数字而已


test2.cmd
  1. @echo off
  2. for /f %%c in (机构号.txt) do (
  3.         echo Searching "%%c" in ones.txt..........
  4.         FIND /i "%%c"  onse.txt >NUL
  5.         IF not ERRORLEVEL  1 GOTO FOUND_LABEL
  6.         goto not_found_label
  7. )
  8. :FOUND_LABEL
  9. echo This is FOUND_LABEL
  10. PAUSE
  11. GOTO :EOF


  12. :NOT_FOUND_LABEL
  13. ECHO This is NOT_FOUND_LABEL
  14. PAUSE
  15. GOTO :EOF
复制代码

机构号.txt
  1. 888888888
复制代码


onse.txt
  1. 888888888
复制代码


sshot-1.png (8.75 KB, 下载次数: 88)

sshot-1.png

test2.7z

405 Bytes, 下载次数: 3, 下载积分: 无忧币 -2

点评

为什么机构号加了个路径进去就不灵了呢?路径改成E:\机构号.TXT都没问题,就是用了下面这个路径就有问题了,但是onse.txt加了这个路径却没问题 @echo off for /f %%c in ("%USERPROFILE%\桌面\机构号.txt") do (  详情 回复 发表于 2014-1-25 21:33
回复

使用道具 举报

16#
 楼主| 发表于 2014-1-25 21:33:22 | 只看该作者
为什么机构号加了个路径进去就不灵了呢?路径改成E:\机构号.TXT都没问题,就是用了下面这个路径就有问题了,但是onse.txt加了这个路径却没问题

@echo off
for /f %%c in ("%USERPROFILE%\桌面\机构号.txt") do (
       
        FIND /i "%%c"  "%USERPROFILE%\桌面\onse.txt" >NUL
        IF not ERRORLEVEL  1 GOTO FOUND_LABEL
        goto not_found_label
)
回复

使用道具 举报

17#
发表于 2014-1-26 08:45:26 | 只看该作者
把 ("%USERPROFILE%\桌面\机构号.txt")
换成
('type "%USERPROFILE%\桌面\机构号.txt"')

点评

厉害!这一步又实现了。 再请教鸟哥:附件中的格式,分为两部分内容,怎样才可以实现只读取下半部分?  详情 回复 发表于 2014-1-26 13:31
回复

使用道具 举报

18#
 楼主| 发表于 2014-1-26 13:31:38 | 只看该作者
dos时代菜鸟 发表于 2014-1-26 08:45
把 ("%USERPROFILE%\桌面\机构号.txt")
换成
('type "%USERPROFILE%\桌面\机构号.txt"')

厉害!这一步又实现了。

再请教鸟哥:附件中的格式,分为两部分内容,怎样才可以实现只读取下半部分?

onse.zip

209 Bytes, 下载次数: 6, 下载积分: 无忧币 -2

回复

使用道具 举报

19#
发表于 2014-1-26 14:04:49 | 只看该作者
那个 onse.txt 是固定的就这两部分?还是有好多部分,只要第二部分。还是 。。。。。?

回复

使用道具 举报

20#
发表于 2014-1-26 14:15:11 | 只看该作者
村长就是俺 发表于 2014-1-26 13:31
厉害!这一步又实现了。

再请教鸟哥:附件中的格式,分为两部分内容,怎样才可以实现只读取下半部分?
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set jx=0
  4. set str0=
  5. for /f %%c in (onse.txt) do (
  6.         set str0=%%c
  7.         if "!str0:~0,1!"=="(" (
  8.                 if "%%c"=="(机械系统待处理明细)" (
  9.                         set jx=1
  10.                 ) else set jx=0
  11.         )
  12.         if !jx!==1 echo %%c
  13. )
复制代码

点评

鸟哥,如附件,“系统信息”里面有3部分内容,如何实现用你上面这段代码加上原来的代码读取B部分跟C部分并实现报警?有劳指点,祝新年快乐!  详情 回复 发表于 2014-2-10 09:12
回复

使用道具 举报

21#
 楼主| 发表于 2014-1-29 13:15:19 | 只看该作者
鸟哥,如附件,“系统信息”里面有3部分内容,如何实现读取B部分跟C部分并实现报警?有劳指点,祝新年快乐!

系统信息.zip

581 Bytes, 下载次数: 3, 下载积分: 无忧币 -2

Check.zip

503 Bytes, 下载次数: 2, 下载积分: 无忧币 -2

回复

使用道具 举报

22#
发表于 2014-2-10 09:12:11 | 只看该作者

鸟哥,如附件,“系统信息”里面有3部分内容,如何实现用你上面这段代码加上原来的代码读取B部分跟C部分并实现报警?有劳指点,祝新年快乐!

检测.zip

1.18 KB, 下载次数: 4, 下载积分: 无忧币 -2

回复

使用道具 举报

23#
发表于 2014-2-10 09:48:34 | 只看该作者
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set jx=0
  4. set str0=
  5. for /f %%c in (onse.txt) do (
  6.         set str0=%%c
  7.         if "!str0:~0,1!"=="(" (
  8.                 set jx=0
  9.                 if "%%c"=="(B系统)"  set jx=1
  10.                 if "%%c"=="(C系统)"  set jx=1
  11.         )
  12.         if !jx!==1 echo %%c
  13. )
复制代码
回复

使用道具 举报

24#
发表于 2014-2-10 09:50:31 | 只看该作者
自己研究吧。因为 不知道你的 全部意图。

点评

能否加你QQ?就差两步了,拜托!  详情 回复 发表于 2014-2-10 10:07
回复

使用道具 举报

25#
发表于 2014-2-10 10:07:50 | 只看该作者
dos时代菜鸟 发表于 2014-2-10 09:50
自己研究吧。因为 不知道你的 全部意图。

能否加你QQ?就差两步了,拜托!
回复

使用道具 举报

26#
发表于 2014-2-13 18:44:51 | 只看该作者
本来已解决99.9%的问题,楼猪发神经跑bathome发同样的帖,目测它对“dos时代菜鸟”的回复根本不领情,这货根本不值得帮。
http://www.bathome.net/viewthread.php?tid=28745

点评

呵呵,人家要的是 现成的 鱼,又何必强求 要人家学 渔。这是人家的自由嘛。  详情 回复 发表于 2014-2-14 08:39
回复

使用道具 举报

27#
发表于 2014-2-14 08:39:34 | 只看该作者
pznpt 发表于 2014-2-13 18:44
本来已解决99.9%的问题,楼猪发神经跑bathome发同样的帖,目测它对“dos时代菜鸟”的回复根本不领情,这货 ...

呵呵,人家要的是 现成的 鱼,又何必强求 要人家学 渔。这是人家的自由嘛。

点评

非常感谢你,已经解决了。 还要特别谢谢紫狐。  详情 回复 发表于 2014-2-15 09:08
回复

使用道具 举报

28#
 楼主| 发表于 2014-2-15 09:08:31 | 只看该作者
dos时代菜鸟 发表于 2014-2-14 08:39
呵呵,人家要的是 现成的 鱼,又何必强求 要人家学 渔。这是人家的自由嘛。

非常感谢你,已经解决了。

还要特别谢谢紫狐。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-8 21:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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