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

时间:2013-04-02 19:53:28

标签: batch-file cmd wildcard delete-file

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

示例:

Filename   
Filename.1  
Filename.2  
Filename.3

我想编写一个删除“filename.?”的基本脚本,但每当我写一些像

这样的内容
del /s "Filename.?"

del /s "filename.*" 

它用该文件名删除所有内容。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

如果你不介意暂时重命名文件,你可以这样做:

ren filename filename_keep
del filename.*
ren filename_keep filename

答案 1 :(得分:2)

写了一个小蟒蛇脚本以获得乐趣。

import os

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

只需弹出一个python shell并运行它,就像一个魅力。

答案 2 :(得分: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.*