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

[文件操作] [已解决]批处理如何获取给定文件夹子目录中的所有文件?

[复制链接]
发表于 2015-7-29 11:51:47 | 显示全部楼层 |阅读模式
本帖最后由 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!)
复制代码
发表于 2015-7-29 12:36:34 | 显示全部楼层
本帖最后由 pcl_test 于 2015-7-29 12:39 编辑
  1. @echo off
  2. cd /d "E:\a"
  3. >"content.txt" findstr /ms . *.*
  4. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
zhangzhi + 1 非常感谢你的回复,可以读出路径,如果我想 ...

查看全部评分

发表于 2015-7-29 13:56:01 | 显示全部楼层
本帖最后由 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. )
复制代码
 楼主| 发表于 2015-7-29 14:33:15 | 显示全部楼层
非常感谢2楼3楼的回复
试了一下
2楼的好用
3楼的没有获取到路径
如果我想在原来的基础上排除某中文件
比如排除*.meta
这个应该怎么处理
 楼主| 发表于 2015-7-29 14:37:37 | 显示全部楼层
回复 2# pcl_test


    非常感谢
   可以读出路径
   我想排除其中的*.meta怎么处理呢
发表于 2015-7-29 15:01:18 | 显示全部楼层
本帖最后由 pcl_test 于 2015-7-29 15:25 编辑

回复 5# zhangzhi
改一句

  1. >"content.txt" (findstr /ms . *.*|findstr /iv "\.meta$")
复制代码
 楼主| 发表于 2015-7-29 15:08:35 | 显示全部楼层
回复 6# pcl_test


    我试了
还是不行
还是没有排除掉.meta结尾的文件
发表于 2015-7-29 15:22:02 | 显示全部楼层
回复 7# zhangzhi

6楼已改
 楼主| 发表于 2015-7-29 15:37:42 | 显示全部楼层
回复 8# pcl_test


    .meta排除掉了
非常感谢
不过还有一点点和我说的不一样
/test1.txt
/b1/test.txt
我的最前面有个 /
最好把这个加上
麻烦你了
发表于 2015-7-29 15:56:04 | 显示全部楼层
为什么我用findstr取不到路径,win8
发表于 2015-7-29 16:02:09 | 显示全部楼层
回复 10# flyinnet9

findstr  /ms取得是相对路径,你当前目录都已经在D:\Script\test了
 楼主| 发表于 2015-7-29 16:05:43 | 显示全部楼层
回复 11# pcl_test

帮看下我9楼说的那个呗
那个好解决吗?
发表于 2015-7-29 16:06:41 | 显示全部楼层
回复 11# pcl_test


    ‘吓一跳,还以为我机器有问题
发表于 2015-7-29 16:10:47 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2015-7-29 16:22:33 | 显示全部楼层
回复 14# pcl_test


实在不好意思
发现个严重问题
/test1.txt
/b1/test.txt
我要的这种类型的/而不是\
你最后回复的那个其它的都正确
就差这个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 17:37 , Processed in 0.021630 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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