在命令行中删除除没有扩展名的文件以外的所有文件

3
我有一个应用程序,将日志转储到文件夹中。它会将文件写成最近的没有扩展名的文件,每个旧版本都会在末尾添加 .1、.2、.3 等等。

例如:

Filename   
Filename.1  
Filename.2  
Filename.3

我想写一个基本脚本,删除“filename.?”,但无论我写什么。
del /s "Filename.?"

或者

del /s "filename.*" 

它会删除所有使用该文件名的内容。
任何帮助都将不胜感激。
3个回答

2
假设您使用的是Windows操作系统,将以下内容保存在一个名为"exclude_delete.bat"的文件中:
@echo off & setlocal

if "%1"=="" goto :syntax

set wildcard=%1

for %%f in (%wildcard%) do (
  if not "%%~xf"=="" (
    echo Deleting: %%f
    del "%%f"
  ) else (
    echo Keeping: %%f
  )
)

goto :eof

:syntax
echo. Syntax: %0 ^<wildcard^>
echo.
echo. Example: to delete every file "Filename.*" except "Filename":
echo.   %0 Filename.*

2

如果你不介意暂时重命名文件,可以按照以下方式进行操作:

ren filename filename_keep
del filename.*
ren filename_keep filename

这是我的第一个想法,如果我可以重命名那个文件,它将完美地工作。感谢您的输入! :) - EnvMatt

2

我为了娱乐而编写了一个小的Python脚本。

import os

for f in os.listdir('.'):
    if os.path.isfile(f):
        if '.' in f:
            os.remove(f)

只需打开Python shell并运行此命令,就可以像魔法一样工作。


谢谢你,我以前从未使用过Python,我会买一本书开始尝试。感谢你的快速回复! - EnvMatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接