Board logo

标题: [文件操作] 【已解决】BAT批处理命令dir如何显示当前目录完整文件路径? [打印本页]

作者: zhanglei1371    时间: 2014-2-8 10:27     标题: 【已解决】BAT批处理命令dir如何显示当前目录完整文件路径?

本帖最后由 zhanglei1371 于 2014-2-9 14:35 编辑

dir /b:只显示当前目录文件名
dir/b/s:显示包括子目录在内的完整路径,
如果想只显示当前目录下文件的完整路径,而不含子目录,该如何用dir实现?
作者: apang    时间: 2014-2-8 13:43

for + dir
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b') do echo,%~dp0%%a
  3. pause
复制代码
dir + findstr
  1. @echo off
  2. set "p=%~dp0"
  3. dir /b /s|findstr /ire "%p:\=\\%[^\\]*"
  4. pause
复制代码

作者: zhanglei1371    时间: 2014-2-8 18:07

本帖最后由 zhanglei1371 于 2014-2-8 20:21 编辑

回复 2# apang


    感谢apang大师,问题已解决。已知道含义
作者: DAIC    时间: 2014-2-8 20:08

回复 3# zhanglei1371


    哪里不懂问哪里
作者: aaboy    时间: 2014-2-14 09:23

findstr /ire "%p:\=\\%[^\\]*" 是什么意思?正则表达式吗?
作者: DAIC    时间: 2014-2-14 09:54

回复 5# aaboy


%p:\=\\% 是字符串替换,目的是把变量p里面保存的路径中的 \ 替换成 \\
替换的结果和后面的 [^\\]* 一起作为正则表达式交给 findstr 命令去处理

假设当前路径是:
C:\test\

当前目录下面有以下文件:
C:\test\a.txt
C:\test\test.bat
C:\test\folder\b.txt

变量 p 里面保存的路径是 C:\test\
经过 %p:\=\\% 替换得到的结果是 C:\\test\\
整个正则表达式就是 C:\\test\\[^\\]*
其中 [^\\] 表示一个不是斜线的字符,[^\\]* 表示一个不是斜线的字符串,实际上就是匹配了一个文件名




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