我想从当前目录循环到子目录并只显示不包含特定字符串的目录(在本例中为folder1):
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=*" %%G in ('dir /b /s /a:d %cd%') do ^
set str1=%%G
if not x%str1:folder1=%==x%str1% echo %%G
endlocal
但是,这个脚本什么都不显示,但我确实有几个子目录要浏览。
感谢您的帮助
奥雷利亚
你几乎做到了:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /f "tokens=*" %%G in ('dir /b /s /a:d') do (
set "str1=%%G"
if not "!str1:folder1=!" == "!str1!" echo %%G
)
endlocal
dir
命令显示当前目录中的文件夹,只需使用dir /B /S /A:D
; 没有必要包含该%cd%
部分(与您dir
在命令提示符下键入的方式相同,但不是dir %cd%
.set
命令中,将变量及其值括在引号中很方便:set "str1=%%G"
; 这避免了由任何不可见空间引起的问题。这同样适用于if
命令中的值。for
或if
命令中修改变量时,新值必须通过扩展!
(这就是 的目的EnableDelayedExpansion
)。%%G
可替换参数的值仅在for
. 使用括号将所有进入for
.本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句