批处理 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"
)
) 展开
思路大概是下面这样子的,但是总是提示找不到.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"
)
) 展开
1个回答
展开全部
@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"
)
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"
)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询