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

[文本处理] 批处理如何检测文本内容并将其改写入另一个文件内?

[复制链接]
发表于 2021-2-6 10:31:57 | 显示全部楼层 |阅读模式
就是我想要在Minecraft服务器中实现玩家在游戏内聊天中输入某个格式的字符,批处理就根据这个字符切换当前地图和材质包并重启
而我想的就是可以在服务器核心(java语言)的启动批处理中,加入一些语句,可以从当前目录下的logs文件夹中的latest.txt文件中查找某种格式的字符(比如shadow.changemap这样子的?能够识别就好),然后将识别到的(shadow.changemap前的shadow)文字写入当前目录下的server.properties(可以用txt打开)文件中的level-name=之后和server.properties中的resourcepack=https:网盘地址/resource.zip中的.zip之前的文本(resource改为shadow),并执行stop(这个stop是Minecraft服务器核心的stop,原本的bat文件是有自动重启,所以stop了之后会自动重启)(如果能执行say mapchangecomplete就更好了)
自己研究了很久没搞好....所以来这里求助啦~~谢谢啦~~
————————
哦对,两个写入的操作都是修改
 楼主| 发表于 2021-2-6 10:36:22 | 显示全部楼层
回复 1# FinDream


    以及如果说能附带上某些教程的链接就更好了....想系统的学一下www
发表于 2021-2-6 14:06:16 | 显示全部楼层
直接把信息追加到server.properties文本末尾
  1. @echo off & cd /d "%~dp0"
  2. set "foot=.changemap"
  3. if not exist "logs\latest.txt" goto :exit
  4. for /f "delims=." %%i in ('findstr /i "%foot%" "logs\latest.txt"') do (
  5.         echo level-name=%%i
  6.         echo resourcepack=https:网盘地址/%%i.zip
  7.         (
  8.                 echo level-name=%%i
  9.                 echo resourcepack=https:网盘地址/%%i.zip
  10.         ) >> "server.properties"
  11. )
  12. start "" "stop.bat"
  13. echo say mapchangecomplete!
  14. :exit
  15. pause&exit
复制代码
 楼主| 发表于 2021-2-6 14:34:22 | 显示全部楼层
回复 3# went


    太感谢了!我这就去试试
 楼主| 发表于 2021-2-6 15:40:56 | 显示全部楼层
回复 3# went



你好,追加到末尾的话就冲突了呀.....有没有办法能修改的呢
发表于 2021-2-6 16:19:56 | 显示全部楼层
那就这个
  1. @echo off & cd /d "%~dp0"
  2. set "foot=.changemap"
  3. set "file=server.properties"
  4. if not exist "logs\latest.txt" goto :exit
  5. for /f "delims=." %%i in ('findstr /i "%foot%" "logs\latest.txt"') do (
  6.         set "level-name=%%i"
  7.         set "resourcepack=https:网盘地址/%%i.zip"
  8. )
  9. (
  10.         for /f "usebackq tokens=1* delims==" %%i in ("%file%") do (
  11.                 if /i "%%i"=="level-name" echo %%i=%level-name%
  12.                 if /i "%%i"=="resourcepack" echo %%i=%resourcepack%
  13.                 if /i not "%%i"=="level-name" if /i not "%%i"=="resourcepack" echo %%i=%%j
  14.         )
  15. ) > "%file%_NEW"
  16. move /y "%file%_NEW" "%file%"
  17. start "" "stop.bat"
  18. echo say mapchangecomplete!
  19. :exit
  20. pause&exit
复制代码
 楼主| 发表于 2021-2-6 22:22:56 | 显示全部楼层
回复 6# went


    感谢!!!!!
 楼主| 发表于 2021-2-6 22:41:33 | 显示全部楼层
回复 6# went


    你好.....很抱歉又来打扰你
就是我这个脚本是想用来在一个保持开启的批处理(jar)中使用的,但是这个似乎是一次性的?
能否实现不停的或者说有几秒间隔的执行这个指令呢?(而且在不影响整个脚本的情况下)
谢谢了~~
发表于 2021-2-6 23:01:44 | 显示全部楼层
goto + timeout 即可实现
  1. @echo off & cd /d "%~dp0"
  2. set "foot=.changemap"
  3. set "file=server.properties"
  4. if not exist "logs\latest.txt" goto :exit
  5. REM 时间间隔(秒)
  6. set "times=30"
  7. :loop
  8. call :updateProfile
  9. timeout /t %times% /nobreak
  10. goto :loop
  11. :exit
  12. pause&exit

  13. :updateProfile
  14. echo.
  15. for /f "delims=." %%i in ('findstr /i "%foot%" "logs\latest.txt"') do (
  16.         set "level-name=%%i"
  17.         set "resourcepack=https:网盘地址/%%i.zip"
  18. )
  19. (
  20.         for /f "usebackq tokens=1* delims==" %%i in ("%file%") do (
  21.                 if /i "%%i"=="level-name" echo %%i=%level-name%
  22.                 if /i "%%i"=="resourcepack" echo %%i=%resourcepack%
  23.                 if /i not "%%i"=="level-name" if /i not "%%i"=="resourcepack" echo %%i=%%j
  24.         )
  25. ) > "%file%_NEW"
  26. move /y "%file%_NEW" "%file%"
  27. start "" "stop.bat"
  28. echo say mapchangecomplete!
  29. goto :eof
复制代码
 楼主| 发表于 2021-2-7 08:48:59 | 显示全部楼层
回复 9# went


    感谢~唉连改个命令都不会我真是应该好好学习下才好....
发表于 2021-2-7 12:01:29 | 显示全部楼层
回复 10# FinDream

了解基本语法后,推荐先学for,其它命令自然水到渠成
http://www.bathome.net/thread-2189-1-1.html
 楼主| 发表于 2021-2-10 13:12:12 | 显示全部楼层
回复 11# went


    感谢大佬55555555!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 11:24 , Processed in 0.021394 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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