0

我写的脚本有问题:

@echo off 
e:
cd folder1
cd logs
cd App1

for /F "skip=20 delims=" %%F in ('dir /b/o-d/a-d log11101*.*') do del "%%F"

该脚本适用于 1 个文件夹。它保留20个最新的日志文件,并删除文件夹中以“log11101”开头的所有其余文件(因为我在这些文件夹中有其他日志文件我不想用这个脚本删除......我想申请此脚本在多个文件夹中,但都在 FOLDER1 中,使用相同的“for /f”skip=20.......................... ........do del "%%F" . 我很难做这样的事情,因为父文件夹是 FOLDER1/LOGS:

@echo off 
e:
cd folder1
cd logs
cd App1

for /F "skip=20 delims=" %%F in ('dir /b/o-d/a-d log11101*.*') do del "%%F"

cd ..
cd App2

for /F "skip=20 delims=" %%F in ('dir /b/o-d/a-d log11101*.*') do del "%%F"

但它不起作用!它适用于 1 个文件夹,但另一个,它会删除除 1 个文件之外的所有文件,而不是保留 20 个文件并删除其余文件。

有没有办法让我把我想用脚本定位的所有文件夹,像这样,只运行这个脚本一次?:

x:/folder1/logs/app1
x:/folder1/logs/app2
x:/folder1/logs/app4

for /f "skip=20...............

谢谢

4

1 回答 1

2

我看不到您的第二个代码库如何仅在第二个文件夹中保留 1 个文件 - 第二个文件夹的行为应该与第一个相同。您确定 App2 文件夹的开头有超过 1 个 log11101* 文件吗?

建议 - 在 DEL 命令之前插入 ECHO 并查看结果。一旦输出看起来正确,然后删​​除 ECHO 以使脚本正常运行。

只需很少的代码即可方便地对位于根目录中的文件夹列表执行删除操作:

@echo off
for %%D in ("App1" "App2" "App4") do (
  cd /d "e:\folder1\logs\%%~D"
  for /f "skip=20 delims=" %%F in ('dir /b /o-d /a-d log11101*.*') do echo del "%%F"
)

如果要对根目录中的所有文件夹执行删除:

@echo off
for /d %%D in ("e:\folder1\logs\*") do (
  cd /d "%%D"
  for /f "skip=20 delims=" %%F in ('dir /b /o-d /a-d log11101*.*') do echo del "%%F"
)

我已经在 DEL 之前添加了 ECHO,所以一旦一切看起来都不错,请移除 ECHO 以使其正常工作。

于 2012-04-25T21:30:32.993 回答