Board logo

标题: [文本处理] 【已解决】批处理想取出文本中间,哪位帮忙看看 [打印本页]

作者: qw123456    时间: 2024-8-29 15:32     标题: 【已解决】批处理想取出文本中间,哪位帮忙看看

读入一个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
复制代码

作者: 77七    时间: 2024-8-29 16:15

情况复杂,请把文本上传到网盘。
作者: qixiaobin0715    时间: 2024-8-29 16:18

你要说得让大家都明白。比如某一行共有5个反斜杠,你要取哪一部分文本呢;亦或你最终目的是要做什么呢?
作者: qw123456    时间: 2024-8-29 16:23

回复 2# 77七


    链接:https://pan.baidu.com/s/1k1dYVxOnbABmC9QZ_6VWWg
提取码:gl2j
作者: 77七    时间: 2024-8-29 16:31

回复 4# qw123456


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


希望得到的结果是什么样的?
作者: qw123456    时间: 2024-8-29 16:31

回复 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  。
作者: qw123456    时间: 2024-8-29 16:34

本帖最后由 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
作者: qixiaobin0715    时间: 2024-8-29 16:35

你最终目的是要做什么?
作者: qw123456    时间: 2024-8-29 16:38

回复 8# qixiaobin0715


        D:\book\20\29\tiles.yaml
D:\book\20\30\40\tiles.yaml  
第一行得到20  从后往前数是固定的    3  2
第二行得到30   从后往前数是固定的    3  2
作者: qixiaobin0715    时间: 2024-8-29 16:50

  1. @echo off
  2. for /f "delims=" %%i in (urls.txt) do (
  3.     for %%j in ("%%i\..\..") do echo,%%~nxj
  4. )
  5. pause
复制代码

作者: qw123456    时间: 2024-8-29 20:20

回复 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

大佬看看怎么不能新建啊
作者: Five66    时间: 2024-8-29 20:55

啊 , 意思是从后往前取 , 取第3列么
作者: qixiaobin0715    时间: 2024-8-30 08:25

回复 11# qw123456
怎么是这样?挤牙膏式的提问,就不能整理一下思路,把你的需求前前后后一次性说清楚不就行了。基本上是同一个求助,开了3个新帖,还不一定解决问题,帮你的人不知道你到底要解决什么问题,需要一个个的猜,也浪费别人的时间和精力。先学习学习别的帖子的提问方式吧。




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