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

[文件操作] [已处理]批处理如何从后往前取值?

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的全名呢?
花开不问月,不语笑红尘.

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

TOP

本帖最后由 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
------
--------------------------------------------------
与理想的输出结果。。差很多,有办法解决吗?
花开不问月,不语笑红尘.

TOP

请勿一帖多问

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

请楼主另开帖求助

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

请先搜索再发帖
***共同提高***

TOP

返回列表