在for / d批处理文件中嵌套/ f

时间:2016-11-02 20:11:30

标签: batch-file

我正在尝试创建一个批处理文件,该文件在for / d列表中运行多个文件夹,然后回显文件夹中最旧的文件。最终,这将用于将文件移动到另一个文件夹。我遇到的问题是我无法在不结束整个命令的情况下让for / f转义。

@echo off
setlocal enableextensions disabledelayedexpansion

set basefolder=M:\somefolder\*
for /D %%D in (%basefolder%) do (

FOR /F %%I IN ('DIR %%D\* /B /O:-D') DO echo "%%I" & goto moved
:moved
)

这让我“)意外”

@echo off
setlocal enableextensions disabledelayedexpansion

set basefolder=M:\somefolder\*
for /D %%D in (%basefolder%) do (

FOR /F %%I IN ('DIR %%D\* /B /O:-D') DO echo "%%I" & exit /b
)

当然,这会在处理的第一个文件夹中退出命令。

有人可以推荐一些可能有用的东西吗?

1 个答案:

答案 0 :(得分:2)

for /D %%D in (%basefolder%) do (
 set "show=Y"    
 FOR /F %%I IN ('DIR %%D\* /B /O:-D') DO if defined show (
  echo "%%I"
  set "show="
 )
)

使用cmd使用if defined变量的当前值的事实。

请注意,标签不能在代码块(带括号的系列命令)中使用