Board logo

标题: [文件操作] [已处理]批处理如何从后往前取值? [打印本页]

作者: missll    时间: 2012-9-28 17:34     标题: [已处理]批处理如何从后往前取值?

http://www.xxx.com/123/456/xxx.dat
http://www.xxx.com/123/xxxxx.dat
http://www.xxx.com/123/4/6/788/xxx.dat
http://www.xxx.com/123/456/678/900/xxxxxxx.dat

以上的文本 我想取最后一个/后边的***.dat 文件名
因为/不一样多 不能数第几个  如果按.dat数文件名字 但是文件名字长度又不一样
那么我如何能取到*.dat的全名呢?
作者: batman    时间: 2012-9-28 18:12

  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do echo %%~na
  3. pause>nul
复制代码

作者: missll    时间: 2012-9-29 16:12

本帖最后由 missll 于 2012-9-29 17:32 编辑
batman 发表于 2012-9-28 18:12



    感谢老大回复 但是我没明白 为什么%%~na 就可以取到xxxx 的字符? %%~na 的含义是什么。

另外,我原本的想法是把一下网址中 *.dat 文件名有相同都列出来,然后设置成变量,然后把所有文件名对比一遍,如果文件名有相同,则输出相同文件名的整行地址.  这个批处理该如何写呢?
http://www.xxx.com/123/456/xxx.dat
http://www.xxx.com/123/xxxxx.dat
http://www.xxx.com/123/44444/xxxxx.dat
http://www.xxx.com/123/4/6/788/xxx.dat
http://www.xxx.com/123/456/678/900/xxxxxxx.dat
--------------------------------------
理想的输出结果是:
以下文件名有重复:
http://www.xxx.com/123/456/xxx.dat
http://www.xxx.com/123/4/6/788/xxx.dat

http://www.xxx.com/123/xxxxx.dat
http://www.xxx.com/123/44444/xxxxx.dat
--------------------------------------
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in (b.txt) do (
set xxxx=%%~na.git
for /f %%b in ('findstr /i "\<!xxxx!\>" b.txt') do (
echo %%b >>12345.txt)
echo ------>>12345.txt)
这是我写的批处理,执行结果不够完美。因为有重复。。。 输出结果 :

http://www.xxx.com/123/456/xxx.dat
http://www.xxx.com/123/4/6/788/xxx.dat
------
http://www.xxx.com/123/xxxxx.dat
http://www.xxx.com/123/44444/xxxxx.dat
------
http://www.xxx.com/123/xxxxx.dat
http://www.xxx.com/123/44444/xxxxx.dat
------
http://www.xxx.com/123/456/xxx.dat
http://www.xxx.com/123/4/6/788/xxx.dat
------
http://www.xxx.com/123/456/678/900/xxxxxxx.dat
------
--------------------------------------------------
与理想的输出结果。。差很多,有办法解决吗?
作者: batman    时间: 2012-9-29 19:09

请勿一帖多问

我们不可能在一个帖子中解决所有问题

请楼主另开帖求助

同时此类问题论坛早就有的

请先搜索再发帖




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