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

[文件操作] 批处理如何用以相对路径列出当前目录的文件列表?

[复制链接]
发表于 2012-7-28 12:59:02 | 显示全部楼层 |阅读模式
初学脚本编程真有点摸不着,想用批处理列出当前目录及子目录下的文件,但要求是以相对路径显示(因为我是用来拼成一些拷贝路径),例如当前目录是E:\MY_TEST\BAT,那么
E:\MY_TEST\BAT\abc.txt
E:\MY_TEST\BAT\abc\cde.bin
将显示为
abc.txt
abc\cde.bin

网上看了些例子都是显示绝对路径的,如下面例子就吃不消:
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "delims=" %%i in ('"dir /a/s/b/on *.*"') do (
  3. set file=%%~fi
  4. set 不要这行file=!file:%cd%\=!
  5. set file=!file:\=/!
  6. echo !file! >> 内容.txt
  7. )
复制代码
不知道如何以相对路径显示?!
谢谢!
发表于 2012-7-28 20:04:02 | 显示全部楼层
  1. @echo off &  setlocal ENABLEDELAYEDEXPANSION
  2. for /f "TOKENS=*" %%a in ('dir /s/b') do set n=%%a&echo,!n:%cd%=!
  3. pause
复制代码
发表于 2012-7-28 20:53:52 | 显示全部楼层
回复 2# yangfengoo


    不对,"\123.txt"是被理解为根目录下的123.txt

相对路径用的是正斜杠,应该是“/123.txt”

你还应该做一个斜杠替换
 楼主| 发表于 2012-7-28 21:07:43 | 显示全部楼层
不胜感激!不过还是怪我不才,想继续问下:echo,!n:%cd%=!  看不懂,我怎么把显示的部分取出来,或保存但一个变量中,方便我后面拼成一个拷贝路径,比如把\abc.txt  拼成 \XXX\abc.txt  \YYY\ZZZ\abc.txt
再次感谢yangfengoo !
 楼主| 发表于 2012-7-28 21:15:48 | 显示全部楼层
哦, 那刚才的例子也可以改出来:
set strprx1=/SD/
set strprx2=/NANDFLASH/ST/

@echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('"dir /a/s/b/on *.*"') do (
set file=%%~fi
set file=!file:%cd%\=!
::set file=!file:\=/!
echo %strprx1%!file! %strprx2%!file!
)

但是我不懂set file=!file:%cd%\=! 这句怎么看!请大人指点!
 楼主| 发表于 2012-7-28 21:17:16 | 显示全部楼层
回复  yangfengoo


    不对,"\123.txt"是被理解为根目录下的123.txt

相对路径用的是正斜杠,应该 ...
poter 发表于 2012-7-28 20:53


有真有这点差别?!请问怎么换成正斜杠?
 楼主| 发表于 2012-7-29 09:36:25 | 显示全部楼层
有点明白了,把 set file=!file:\=/! 这句加上可以转换正反斜杠。
%cd%表示当前路径,附空值就等于去掉,同样\=/就把反斜杠改成正斜杠。
 楼主| 发表于 2012-7-29 09:42:40 | 显示全部楼层
还有点问题再请大家帮忙一下,上面的列举把目录也列出来了,怎么判断是目录还是文件啊?!
 楼主| 发表于 2012-7-29 09:55:20 | 显示全部楼层
找到个链接:http://www.bathome.net/thread-1047-1-1.html
问题解决了,谢谢大家!这个论坛真好,以后会常来!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 14:15 , Processed in 0.020124 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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