[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

啊 , 意思是从后往前取 , 取第3列么

TOP

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

大佬看看怎么不能新建啊

TOP

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

评分人数

TOP

回复 8# qixiaobin0715


        D:\book\20\29\tiles.yaml
D:\book\20\30\40\tiles.yaml  
第一行得到20  从后往前数是固定的    3  2
第二行得到30   从后往前数是固定的    3  2

TOP

你最终目的是要做什么?

TOP

本帖最后由 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

TOP

回复 4# qw123456


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


希望得到的结果是什么样的?
bat小白,请多指教!谢谢!

TOP

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

TOP

回复 2# 77七


    链接:https://pan.baidu.com/s/1k1dYVxOnbABmC9QZ_6VWWg
提取码:gl2j

TOP

你要说得让大家都明白。比如某一行共有5个反斜杠,你要取哪一部分文本呢;亦或你最终目的是要做什么呢?

TOP

情况复杂,请把文本上传到网盘。
bat小白,请多指教!谢谢!

TOP

返回列表