dos批处理中怎么获取for中的获取的各个文件的所在目录?

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\)

两条命令就可以了。

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

 

分两点讲:

1、如果要遍历一个目录下所有inf文件,直接用dir会容易得多,比如查找d:\web下所有的".ini"文件:

      dir/s/b d:\web\*.ini

      这样就会递归找出所有web及其子目录下的“.ini”文件,除非你是想逐个逐个文件进行处理,则可以用for /r

 

2、指定文件所在的路径问题

@echo off
dir /s/b e:\*.ini>ab.txt
for /f "delims=" %%i in (ab.txt) do (
   echo %%~dpi
)
pause

 

 

如上的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

【已解决】批处理命令for如何截取一个路径中的程序名字?

 比如
C:\Program Files\kuwo\kuwomusic\KwMusic.exe
C:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe

要截取KwMusic.exe QQProtect.exe并赋值到变量到%sky%。

其中路径是不确定的,就是要获取最后一个“\”后面的内容并赋值到变量到%sky%。

没赋值到变量,把路径复制到文本path.txt中

@echo off

for /f "delims=" %%i in (path.txt) do (
	echo %%~ni%%~xi
)

pause
@echo off
for %%i in ("C:\Program Files\kuwo\kuwomusic\KwMusic.exe") do (
    set "sky=%%~nxi"
)
echo,%sky%
pause

 

 

@echo off
set "str=C:\Program Files\kuwo\kuwomusic\KwMusic.exe"
:loop
set "sky=%str:*\=%"
if "%sky%" equ "%str%" (
    echo %sky%
) else (
    set str=%sky%
    goto :loop
)
pause

解释一条批处理一条批处理

for /f "tokens=1 delims=:" %%a in ('dir /s /b "./" ^| findstr /n .*') do set num=%%a
echo %num%

 

findstr /n .* 和 ^|
我懂了,用就是 ^| 是子命令.
回答,3楼,用findstr \n .* 的意思是显示行号,不写,不会出行号的.

 

|
管道命令
用于将前一个命令的执行结果输出到后一个命令
在上句中表示将dir结果输给findstr命令;
因为是dir命令是for的子命令,所有要在 | 前加入 ^ ,变成了^|;
findstr /n .* 表示查找任意字符包括空行和空字符

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值