中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-06 16:04
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]查找指定文件夹下的文件 查看 1,267 回复 7
楼 主 [求助]查找指定文件夹下的文件 发表于 2010-09-10 23:35 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
需求:
查找指定文件夹下的文件,(不查找此文件夹下的子目录),读取文件并把文件内容写到另个文件。
比如要查找磁盘所有HA文件夹下的WS.txt文件,并把ws.txt的文件内容输出到R.txt中。

如下写的只能搜索到WS.txt以及其路径,但是并不能只显示HA文件夹下的,并且不能实现把ws.txt内容copy到r.txt中
@echo off
for %%i in (c:,d:,e:,f:) do dir /s /b %%i\WS.txt >>filepath.txt 2>nul
for /f %%a in ( filepath.txt) do start %%a

麻烦给个帮助。

[ Last edited by coldface on 2010-9-13 at 10:24 ]
2 发表于 2010-09-11 17:29 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
怎么把filepath.txt里保存的路径中的文件写入到另一个文件?
3 发表于 2010-09-11 17:56 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
哦 想出来了

@echo off
for %%i in (c:,d:,e:,f:) do dir /s /b %%i\ws.txt >>filepath.txt 2>nul
for /f %%a in ( filepath.txt) do (
for /f "usebackq" %%j in (`type %%~sa`) do echo %%j >R.txt
)
4 发表于 2010-09-13 10:07 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
我上面写的有问题,如果ws.txt在如下目录存在:
d:\Program Files\xj1\hal_XJQ\ddzv\Data\Btn\video\ws.txt
d:\Program Files\xj1\hal_XJQ\LuckyDDZ\Data\Ani\ws.txt
d:\Program Files\xj1\hal_XJQ\LuckyDDZ\Data\Other\ws.txt
d:\Program Files\xj11\hal_XJQ\ws.txt
d:\Program Files\xj16XJ\halQQ\ws.txt
那么我如果只想读取d:\Program Files\xj11\hal_XJQ这个根目录下的ws.txt,不读取其子目录下的ws.txt,该如何处理?
另外写入到wj.txt文件那步也有问题 不应该是%~sa,因为未包饭对应的目录项,也不明白怎么写入了/

[ Last edited by coldface on 2010-9-13 at 10:31 ]
5 发表于 2010-09-13 15:24 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
帮助下,谢谢
6 发表于 2010-09-14 10:38 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
顶下!
7 发表于 2010-09-14 11:10 ·  中国 辽宁 葫芦岛 联通
中级用户
★★
积分 247
发帖 147
注册 2009-04-09 20:52
17年会员
UID 142531
性别 男
状态 离线
@echo off & setlocal ENABLEDELAYEDEXPANSION
for %%c in (c: d: e: f:) do (
if exist "%%c\Program Files\xj11\hal_XJQ\ws.txt" type "%%c\Program Files\xj11\hal_XJQ\ws.txt" >>r.txt
)


另外发现你的 “根目录” 概念不清,学习一下 dos 根目录的概念。

按照你的思路修改:
@echo off
for %%i in (c:,d:,e:,f:) do dir /s /b %%i\ws.txt >>filepath.txt 2>nul
for /f %%a in ( filepath.txt) do (
if /I "%%~pa" EQU "\Program Files\xj11\hal_XJQ\" TYPE "%%a" >>R.txt
)

[ Last edited by DXSX on 2010-9-14 at 11:48 ]
8 发表于 2010-09-14 22:58 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
15年会员
UID 170757
性别 男
状态 离线
好的 感谢指教。
您给的程序例子好像不能往R.txt里写
论坛跳转: