【问题标题】:Delete all files except files with no extension in command line删除除命令行中没有扩展名的文件以外的所有文件
【发布时间】:2013-03-24 06:45:09
【问题描述】:

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

例子:

Filename   
Filename.1  
Filename.2  
Filename.3

我想写一个删除“filename.?”的基本脚本,但是每当我写类似的东西时

del /s "Filename.?"

del /s "filename.*" 

它会删除具有该文件名的所有内容。

任何帮助将不胜感激。

【问题讨论】:

    标签: batch-file cmd wildcard delete-file


    【解决方案1】:

    假设是 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
      

      【讨论】:

      • 这是我的第一个想法,如果我可以重命名该文件,它将完美运行。感谢您的输入! :)
      【解决方案3】:

      为了好玩,写了一个小python脚本。

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

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

      【讨论】:

      • 感谢我以前从未使用过 python,我正在买一本关于它的书,并将开始玩。感谢您的快速回复!
      猜你喜欢
      • 2014-07-25
      • 2012-01-28
      • 2014-03-16
      • 2015-07-22
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多