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

[文本处理] 批处理如何将绝对路径名取出文件名?

[复制链接]
发表于 2011-7-15 10:46:04 | 显示全部楼层 |阅读模式
比如文件file.txt的内容如下:
  1. D:/data/area/ioc/map/base/Coor.class
  2. D:/data/area/new/car/hic.txt
  3. D:/data/area/rod/class/game/BindNpcDB.class
  4. D:/data/area/fei.exe
复制代码
现在想通过for循环取出文件名(例如,Coor.class,hic.txt。。。)给变量,如下
  1. @ECHO OFF
  2. setlocal enabledelayedexpansion

  3. FOR /F %%i in (file.txt) do (
  4. set j=echo %%i | sed "s#^.*\\##g"
  5. echo !j!
  6. )
复制代码
但在执行时老是输出错误:
ECHO 处于关闭状态。

这个是什么原因了,有什么办法可以取出?
发表于 2011-7-15 11:33:16 | 显示全部楼层
  1. @ECHO OFF
  2. FOR /F %%i in (file.txt) do echo %%~nxi
复制代码
用扩展参数就行了,不需要 sed ,而且批处理也没有 vbs 里的那种直接将命令输出作为变量内容的办法,要么通过 for ,要么通过第三方(比如 conset)
 楼主| 发表于 2011-7-15 12:07:11 | 显示全部楼层
谢谢版主,终于搞定了!
发表于 2011-7-15 14:44:25 | 显示全部楼层
本帖最后由 Hello123World 于 2011-7-15 14:46 编辑
  1. @echo off
  2. For /f "delims=" %%i in (1.txt) do echo %%~nxi
  3. pause
复制代码
不考虑路径中含有空格的情况吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 17:25 , Processed in 0.015926 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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