我正在尝试创建一个批处理文件,该文件在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
)
当然,这会在处理的第一个文件夹中退出命令。
有人可以推荐一些可能有用的东西吗?
答案 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
变量的当前值的事实。
请注意,标签不能在代码块(带括号的系列命令)中使用