批处理 for /f 问题

需求是d:\doc目录下有大批目录(目录名包含空格),每个目录下有一个或多个.u后缀的文本文件(文件名也包含空格)和其他类型文件,.u文件中可能包含SID:xxxxxx的... 需求是d:\doc目录下有大批目录(目录名包含空格),每个目录下有一个或多个.u后缀的文本文件(文件名也包含空格)和其他类型文件,.u文件中可能包含SID:xxxxxx的字符串,要求遍历这些目录,若找到该目录下的.u文件中含有SID,则将该目录重命名为原目录名前面加上xxxxxx空格(xxxxx为SID后面的字符)
思路大概是下面这样子的,但是总是提示找不到.u文件
@echo off
for /d %%d in (d:\doc\) do (
for /f "tokens=1,2 delims=: usebackq" %%a in ("%%d*.u") do if %%a equ SID ren "%%d" "%%b %%~nd"
)
最后自己多加了一层循环解决了,哎
@echo off
for /d %%d in (d:\doc\) do (
for %%a in ("%%d\*.u") do (
for /f "tokens=1,2 delims=: usebackq" %%b in ("%%a") do
if %%b equ SID ren "%%d" "%%c %%~nd"
)
)
展开
 我来答
albumin
推荐于2016-02-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2385万
展开全部
@echo off
for /d %%d in (d:\doc\) do (
for /f "tokens=1,2 delims=: usebackq" %%a in ("%%d\*.u") do if %%a equ SID ren "d:\doc\%%d" "%%b %%~nd"
)
更多追问追答
追问
我测过了%%d就是包含完整路径和\的,所以%%d*.u和ren那句应该是没问题的,你这个测了也找不到*.u文件
追答
@echo off 
for /d %%d in (d:\doc\*) do (
for /f "tokens=1* delims=: usebackq" %%a in ("%%d\*.u") do if %%a equ SID ren "%%d" "%%b %%~nd"
)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式