Windows 查找“如果”&引用;在目录名中(批处理)

Windows 查找“如果”&引用;在目录名中(批处理),windows,for-loop,batch-file,Windows,For Loop,Batch File,我有一批货 for /d /r %%a in (*) do 如果%%a包含“-”(即空格+连字符+空格),我想执行一个操作;如果%%a不包含此字符串,我想执行另一个操作 我不能让它工作!你知道吗?谢谢 [注:我的问题与此类似:但我无法调整它使其工作!]请尝试以下方法: for /d /r %%a in ("* - *") do 它应该会起作用 编辑:for/d/r循环只会在名称中找到带有“-”的文件夹,因此不需要对路径进行额外的测试 @ECHO OFF SETLOCAL FOR /d /

我有一批货

for /d /r %%a in (*) do 
如果%%a包含“-”(即空格+连字符+空格),我想执行一个操作;如果%%a不包含此字符串,我想执行另一个操作

我不能让它工作!你知道吗?谢谢

[注:我的问题与此类似:但我无法调整它使其工作!]

请尝试以下方法:

for /d /r %%a in ("* - *") do 
它应该会起作用

编辑:
for/d/r
循环只会在名称中找到带有“
-
”的文件夹,因此不需要对路径进行额外的测试

@ECHO OFF
SETLOCAL
FOR /d /r %%a IN (*) DO (
 ECHO "%%~nxa"|FIND " - " >NUL
 IF ERRORLEVEL 1 (ECHO DO action ONE ON "%%a"
 ) ELSE (ECHO action TWO gets done ON "%%a")
)
“查找”用于在“叶”目录中定位“
-
”,因此只有在最低级别包含“
-
”时,才会执行操作2,否则执行操作1


如果您想让文件路径中任何位置出现的“
-
”使操作2发生,请将
%%~nxa
更改为
%%a

,谢谢!如何对不包含“-”的文件夹进行第二次循环?请尝试(从根目录中):
for/f“delims=“%%i in('dir/ad/s/b“myfolder12”)do set“folder=%%i”
echo%folder%
这有点棘手,例如:
@echo off&setlocal
设置“fname=bla bla-biz baz”
设置“right=%fname:=”
呼叫集“left=%%fname:-%right%=%%”
回音[%left%]*[%right%]
对不起,我的时间到了,这里是午夜……)在代码块内部,例如a
for
循环,您需要另一种语法:
@echo off&setlocal´
for/d%%a in()do(`set“fname=%%~a”`call set“right=%%%fname:-=%%”`call set“left=%%%fname:-%right%=%%'`call echo[%%%left%%]*[%right%%]'''),如何将“-”之前的部分(例如%%b)和“-”之后的部分分别设置为%%c?