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

[文本处理] 【已解决】批处理想取出文本中间,哪位帮忙看看

[复制链接]
发表于 2024-8-29 15:32:20 | 显示全部楼层 |阅读模式
读入一个urls.txt的文件,读取每一行,得到\的总数,得到\的前后位置,取\中间文本,但是代码在去出中间部分的时候不执行,查了资料也么有搞明白,那我指导一下。
  1. @echo off &setlocal
  2. for /f "delims=" %%a in (urls.txt) do (
  3.         echo,%%a>0.0&for %%v in (0.0) do set "v1=%%~zv"
  4.         setlocal enabledelayedexpansion &set "s=%%a" &set "s=!s:\=!"
  5.         echo,!s!>0.0&for %%v in (0.0) do set "v2=%%~zv"
  6.         set/a "v=v1-v2"
  7.         set/a "we=v-1"
  8.          set/a "we2=v-2"
  9.                  set "line=%%a"
  10. for /f "tokens=%we%,%we2% delims=" %%i in ("%line%") do (
  11.     set "middlePart=%%i")
  12. endlocal
  13. )
  14. del/q "0.0"&endlocal&pause&exit/b

  15. pause
复制代码

评分

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

查看全部评分

发表于 2024-8-29 16:15:39 | 显示全部楼层
情况复杂,请把文本上传到网盘。
发表于 2024-8-29 16:18:57 | 显示全部楼层
你要说得让大家都明白。比如某一行共有5个反斜杠,你要取哪一部分文本呢;亦或你最终目的是要做什么呢?
 楼主| 发表于 2024-8-29 16:23:33 | 显示全部楼层
回复 2# 77七


    链接:https://pan.baidu.com/s/1k1dYVxOnbABmC9QZ_6VWWg
提取码:gl2j
发表于 2024-8-29 16:31:54 | 显示全部楼层
回复 4# qw123456


假如是这样
  1. D:\book\20\29\tiles.yaml
  2. D:\book\20\30\40\tiles.yaml
复制代码


希望得到的结果是什么样的?
 楼主| 发表于 2024-8-29 16:31:54 | 显示全部楼层
回复 3# qixiaobin0715


     是这样的打开1.txt  读取每一行 ,先确定  一行有多少个“\” ,第一行是这样的:D:\book\18\1\tiles.yaml  我取出他有多少"\",比如他有4个,   for /f "tokens=2,3 delims=\" %%a in ("%str%") do ()  也就是取到18这个数,命令中用4-3,4-2的意思是从后面取。 D:\book这个是不固定的有可能
    D:\book\三国\1\18\1\tiles.yaml,但是从后面取18位置基本固定的。6-3,6-2  。
 楼主| 发表于 2024-8-29 16:34:46 | 显示全部楼层
本帖最后由 qw123456 于 2024-8-29 16:37 编辑

回复 6# 77七


    D:\book\20\29\tiles.yaml
D:\book\20\30\40\tiles.yaml  
第一行得到20  从后往前数是固定的    3  2
第二行得到30   从后往前数是固定的    3  2
发表于 2024-8-29 16:35:26 | 显示全部楼层
你最终目的是要做什么?
 楼主| 发表于 2024-8-29 16:38:04 | 显示全部楼层
回复 8# qixiaobin0715


        D:\book\20\29\tiles.yaml
D:\book\20\30\40\tiles.yaml  
第一行得到20  从后往前数是固定的    3  2
第二行得到30   从后往前数是固定的    3  2
发表于 2024-8-29 16:50:34 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in (urls.txt) do (
  3.     for %%j in ("%%i\..\..") do echo,%%~nxj
  4. )
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
qw123456 + 1 谢谢您

查看全部评分

 楼主| 发表于 2024-8-29 20:20:01 | 显示全部楼层
回复 10# qixiaobin0715
@echo off
for /f "delims=" %%i in (urls.txt) do (
    for %%j in ("%%i\..\..") do echo,%%~nxj
if "%downdir%"=="" set downdir=%%~nxj
if not exist %downdir% md %downdir%

)
pause

大佬看看怎么不能新建啊
发表于 2024-8-29 20:55:55 | 显示全部楼层
啊 , 意思是从后往前取 , 取第3列么
发表于 2024-8-30 08:25:03 | 显示全部楼层
回复 11# qw123456
怎么是这样?挤牙膏式的提问,就不能整理一下思路,把你的需求前前后后一次性说清楚不就行了。基本上是同一个求助,开了3个新帖,还不一定解决问题,帮你的人不知道你到底要解决什么问题,需要一个个的猜,也浪费别人的时间和精力。先学习学习别的帖子的提问方式吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 18:49 , Processed in 0.022851 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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