![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-01 19:05 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,249 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 获取当前目录下所有文件的相对路径 |
| 可打印版本 2,915 / 11 |
| 第1楼 qdcr | 发表于 2006-06-23 17:15 |
| 初级用户 发帖 32 积分 120 | |
|
输出本目录下的所有文件 请问:
如何输出本目录下所有文件的相对路径? c:\test -------name ----a.bmp b.bmp 输出: name\a.bmp b.bmp |
|
| 第2楼 qdcr | 发表于 2006-06-24 00:40 |
| 初级用户 发帖 32 积分 120 | |
|
获取当前目录下所有文件的相对路径 请问如何获取当前目录下所有文件的相对路径?
如 c:\test -------subDir --------1test.txt -------2test.txt 输出: test\sunDir\1test.txt test\2test.txt |
|
| 第3楼 htysm | 发表于 2006-06-24 10:30 |
| 高级用户 发帖 415 积分 866 | |
|
dir /s /o *.* >> file.txt
|
|
| 第4楼 bagpipe | 发表于 2006-06-24 10:53 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
for /r %a in (*) do @echo %~pnxa
|
|
| 第5楼 不得不爱 | 发表于 2006-06-24 11:08 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
dir /s/b
|
|
| 第6楼 不得不爱 | 发表于 2006-06-24 12:13 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
—————————————————版务记录—————————————————
执行:qwe1234567 说明:同样的内容发表不同的主题 操作:合并主题《DOS學習入門 & 精彩文章 (教學室)>输出本目录下的所有文件》与1,4,5楼 处罚:扣除因多发主题所得6分积分,并处罚2分积分 提示:请不要1个同样的内容发表不同的主题或者同样的主题! —————————————————版务记录———————————————— |
|
| 第7楼 qdcr | 发表于 2006-06-24 13:10 |
| 初级用户 发帖 32 积分 120 | |
|
to qwe1234567版主: 接受处罚,呵呵
另外, 尝试了一些dir /s /b,是可以输出本目录下所有文件。 但输出的是绝对路径,而希望得到的是相对路径。 To bagpipe: 您给的这条命令好像只是将盘符忽略掉。 如果是三级目录: c:\first_level ----------test -------name ----a.bmp -------b.bmp 而只想输出test目录下的文件: test\name\a.bmp test\b.bmp 谢谢 |
|
| 第8楼 bagpipe | 发表于 2006-06-24 14:49 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
for %a in (C:\TEST\*.*) do @echo %~pnxa
我觉得楼主够懒的,不能自己好好看一下,就等着别人来解答,唉 |
|
| 第9楼 qdcr | 发表于 2006-06-26 13:55 |
| 初级用户 发帖 32 积分 120 | |
|
to bagpipe:
用for %a in (C:\TEST\*.*) do @echo %~pnxa还是不能达到要求。 如上面所讲, 如果是三级目录: c:\first_level ----------test -------name ----a.bmp -------b.bmp 而只想输出test目录下的文件: test\name\a.bmp test\b.bmp , 使用for %a in (C:\TEST\*.*) do @echo %~pnxa,则输出 first_level\test\name\a.bmp first_level\test\b.bmp btw:刚入门学批处理,有些浮躁,谢谢大家的帮助 |
|
| 第10楼 willsort | 发表于 2006-06-26 14:07 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re qdcr:
请参考以下链接中10楼和11楼的方案: 如何获得文件的上一层目录名字 http://www.cn-dos.net/forum/viewthread.php?tid=19925#pid117288 |
|
| 第11楼 qdcr | 发表于 2006-06-26 15:42 |
| 初级用户 发帖 32 积分 120 | |
|
to willsort版主:
really pretty good :) 谢谢,使用如下的code @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 !file! >> 内容.txt ) 可以将所有文件相对于搜索路径(当前目录)的相对路径输出,但是也同时将所有目录进行输出了。 参考了咱们论坛上另外一个帖子:如何判断参数是文件还是目录 http://www.cn-dos.net/forum/viewthread.php?tid=20999&fpage=1&highlight=%E5%88%A4%E6%96%AD 判断是否存在目录: if exist "%~f1\" ... 判断是否存在文件: if exist "%~f1" if not exist "%~f1\"... 写了如下的批处理:文件列表输出至file.txt,目录列表输出至directory.txt @echo off ::for /r /d %%d in (*.*) do if exist "%%d\*.*" echo %%d >>content.txt for /f %%i in ('"dir /a /s /b *.*"') do call :next "%%i" pause goto :eof :next set jpg=%1 set cd1=%cd:\=/% set jpg=%jpg:\=/% rem echo %%jpg:%cd1%=%% | findstr . for /f %%j in ('"echo %%jpg:%cd1%=%% | findstr . "') do set last=%%j set last=%last:"=% call :checkFD %last% echo %last% >> content.txt goto :eof :checkFD if exist "%~f1\" echo %1>>directory.txt if exist "%~f1" if not exist "%~f1\" echo %1>>file.txt goto :EOF 问题: 在file.txt 还有directory.txt中只有一行记录。 检查了几遍code,觉得没有问题啊。请教 |
|
| 第12楼 willsort | 发表于 2006-06-27 01:07 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re qdcr:
过滤目录可以直接将'"dir /a/s/b/on *.*"'的开关/a改为/a-d,判断文件抑或目录的技巧,一般只在路径是用户输入的情况下使用。 各方案中的set file=!file:\=/!或者set jpg=%jpg:\=/%只是将路径的\转换/,对你的问题并无助益,可以省去。 记录数的问题,那需要结合具体的测试环境来分析。应该是路径在转换过程中出现了小的问题,在checkFd下加一个echo.%1看看输出是否有误吧。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |