2013-04-02 2 views
3

У меня есть приложение, которое сбрасывает журналы в папку. Он записывает файлы в самый последний файл без расширения, и каждая старая версия получает добавленные .1, .2, .3 и т. Д.Удалите все файлы, кроме файлов без расширения в командной строке

Пример:

Filename 
Filename.1 
Filename.2 
Filename.3 

Я хотел бы написать основной сценарий, который стирает "filename.?", но всякий раз, когда я пишу что-то вроде

del /s "Filename.?" 

или

del /s "filename.*" 

Он стирает все с этим именем файла.

Любая помощь была бы принята с благодарностью.

ответ

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.* 
+0

Спасибо, Барт! Это хорошо работает. – EnvMatt

+0

Добро пожаловать в EnvMatt! – Bart

2

Вы могли бы сделать это таким образом, если вы не возражаете временно переименовать файл:

ren filename filename_keep 
del filename.* 
ren filename_keep filename 
+0

Это была моя первая мысль, и она будет прекрасно работать, если я мог бы переименовать этот файл. Спасибо за вход! :) – EnvMatt

2

Написал небольшой питон скрипт для удовольствия.

import os 

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

Просто покройте открытую оболочку python и запустите это, работает как шарм.

+0

Спасибо за это, я раньше не использовал python, я получаю книгу и начинаю играть. Спасибо за этот быстрый ответ! – EnvMatt

Смежные вопросы