dos批处理中怎么获取for中的获取的各个文件的所在目录?
for/R%odr%%%iin(*.inf)do(......)注:%odr%是一个目录(其目录下不确定有多少级目录),想实现的功能:历遍所有指定目录下的inf文件已实现...
for /R %odr% %%i in (*.inf) do (......)
注:%odr% 是一个目录(其目录下不确定有多少级目录),想实现的功能:
历遍所有指定目录下的inf文件 已实现
获取此文件所在的目录(比如%%i中的一个值为 c:\abc\XY\WS\ss.exe, 怎样才能获取的到c:\abc\XY\WS\;如果%dr%=c:\,怎么才能获取到abc\XY\WS或者abc\XY\WS\) 展开
注:%odr% 是一个目录(其目录下不确定有多少级目录),想实现的功能:
历遍所有指定目录下的inf文件 已实现
获取此文件所在的目录(比如%%i中的一个值为 c:\abc\XY\WS\ss.exe, 怎样才能获取的到c:\abc\XY\WS\;如果%dr%=c:\,怎么才能获取到abc\XY\WS或者abc\XY\WS\) 展开
2个回答
展开全部
更多追问追答
追问
如上的e:\如果是变量 %dr%,echo的%~dpi怎样才能去除%dr%部分,获得如下结果
Xshell 5\
Xshell 5\Theme\
或者
Xshell 5
Xshell 5\Theme
追答
@echo off
setlocal EnableDelayedExpansion
dir /s/b e:\*.ini>ab.txt
for /f "delims=" %%i in (ab.txt) do (
set k=%%~dpi
set k=!k:~3!
echo !k!
)
)
pause
展开全部
两条命令就可以了。
dir H:\* /b /s /a|findstr "\.ini\>"
看下面输出结果:
这样直接可以输出目录及所有子目录下全部的.ini文件,
我们把这行命令单独保存成一个dirINI.bat
然后另外写个for循环,
执行dirINIbat,并为返回的每一条结果,循环执行echo命令,范围为tokens指定范围
那么这样写:
@echo off
SETLOCAL ENABLEEXTENSIONS
FOR /F "usebackq tokens=1,2* delims=" %%i IN (
`H:\test\dirini.bat` ) DO (
@echo %%~dpi
)
pause
输出结果看下面,保存为H:\Indexx.bat:
如果不需要,把蓝色方框部分删掉就行了,
如果还要把磁盘盘符也忽略,"%%~dpi"改成"%%~pi"就OK了。
就如上面给出的示例代码一样就行了,自学毕竟水平有限只能做到这样写成两个bat,
不过你需要执行的还是就一个。
望采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询