Board logo

标题: [文件操作] [已解决]批处理如何获取给定文件夹子目录中的所有文件? [打印本页]

作者: zhangzhi    时间: 2015-7-29 11:51     标题: [已解决]批处理如何获取给定文件夹子目录中的所有文件?

本帖最后由 zhangzhi 于 2015-8-11 14:26 编辑

请大神帮忙!写个bat读取给定路径文件夹下所有子目录的文件名,并输出到content.txt里
比如给定E:\a
子目录有E:\a\b1\test.txt ; E:\a\test1.txt
我想要的结果是
/test1.txt
/b1/test.txt
搜到有这么写的,但是如何输出到把路径保存到content.txt呢
  1. @echo off setlocal enabledelayedexpansion
  2. for /r %%i in (*.*) do (
  3. set s=%%i
  4. set s=!s:%~dp0=!
  5. echo !s!)
复制代码

作者: pcl_test    时间: 2015-7-29 12:36

本帖最后由 pcl_test 于 2015-7-29 12:39 编辑
  1. @echo off
  2. cd /d "E:\a\"
  3. >"content.txt" findstr /ms . *.*
  4. pause
复制代码

作者: flyinnet9    时间: 2015-7-29 13:56

本帖最后由 flyinnet9 于 2015-7-29 14:03 编辑

放到e:\a
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set p=%cd%
  4. for /f "tokens=1 delims=" %%a in ('dir /s /b /a-d *.*') do (
  5. set "f=%%a"
  6. set "f=!f:%p%=!"
  7. set "f=!f:\=/!"
  8. echo !f! >>content.txt
  9. )
复制代码

作者: zhangzhi    时间: 2015-7-29 14:33

非常感谢2楼3楼的回复
试了一下
2楼的好用
3楼的没有获取到路径
如果我想在原来的基础上排除某中文件
比如排除*.meta
这个应该怎么处理
作者: zhangzhi    时间: 2015-7-29 14:37

回复 2# pcl_test


    非常感谢
   可以读出路径
   我想排除其中的*.meta怎么处理呢
作者: pcl_test    时间: 2015-7-29 15:01

本帖最后由 pcl_test 于 2015-7-29 15:25 编辑

回复 5# zhangzhi
改一句
  1. >"content.txt" (findstr /ms . *.*|findstr /iv "\.meta$")
复制代码

作者: zhangzhi    时间: 2015-7-29 15:08

回复 6# pcl_test


    我试了
还是不行
还是没有排除掉.meta结尾的文件
作者: pcl_test    时间: 2015-7-29 15:22

回复 7# zhangzhi

6楼已改
作者: zhangzhi    时间: 2015-7-29 15:37

回复 8# pcl_test


    .meta排除掉了
非常感谢
不过还有一点点和我说的不一样
/test1.txt
/b1/test.txt
我的最前面有个 /
最好把这个加上
麻烦你了
作者: flyinnet9    时间: 2015-7-29 15:56

为什么我用findstr取不到路径,win8
作者: pcl_test    时间: 2015-7-29 16:02

回复 10# flyinnet9

findstr  /ms取得是相对路径,你当前目录都已经在D:\Script\test了
作者: zhangzhi    时间: 2015-7-29 16:05

回复 11# pcl_test

帮看下我9楼说的那个呗
那个好解决吗?
作者: flyinnet9    时间: 2015-7-29 16:06

回复 11# pcl_test


    ‘吓一跳,还以为我机器有问题
作者: pcl_test    时间: 2015-7-29 16:10

本帖最后由 pcl_test 于 2015-7-29 16:31 编辑

回复 12# zhangzhi
  1. @echo off
  2. @echo off&setlocal enabledelayedexpansion
  3. cd /d "E:\a\"
  4. (for /f "delims=" %%a in ('findstr /ms . *.*^|findstr /iv "\.meta$"') do (
  5.     set str=%%a
  6.     echo;/!str:\=/!))>"content.txt"
  7. pause
复制代码

作者: zhangzhi    时间: 2015-7-29 16:22

回复 14# pcl_test


实在不好意思
发现个严重问题
/test1.txt
/b1/test.txt
我要的这种类型的/而不是\
你最后回复的那个其它的都正确
就差这个
作者: pcl_test    时间: 2015-7-29 16:32

回复 15# zhangzhi

已改
作者: zhangzhi    时间: 2015-7-29 18:29

回复 14# pcl_test


我要的结果是
/test1.txt
/b1/test.txt
而你那个输出的结果是
\test1.txt
\b1\test.txt
作者: zhangzhi    时间: 2015-7-29 18:33

[以解决]
多谢pcl_test 的耐心帮助
问题得到完美解决!!!
作者: pcl_test    时间: 2015-7-29 18:42

回复 18# zhangzhi

问题得到解决后在顶楼标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html




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