我写的脚本有问题:
@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 ...................... ............做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...............
由于
答案 0 :(得分:2)
我看不到你的第二个代码库如何只保留第二个文件夹中的1个文件 - 第二个文件夹应该与第一个文件夹的行为相同。你确定App2文件夹开头有多个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以使其正常运行。