del *.txt удаляет также файл txt_backup

Предположите, что у нас есть каталог c:\test со следующими файлами:

first.txt
second.doc
third.txt
fourth.txt_bak

Я хочу удалить только txt файлы, но отпуск doc и txtwhatever нетронутый.

Когда я выполняю команду del c:\test\*.txt, это удаляет все кроме 2-го файла.

Любые идеи, как зафиксировать это для удаления только txt файлы?

Править: Я понятия не имею, как клиент назовет их файлы. Суффикс может быть чем-либо, не только txt_something. Это могло быть также txtsomething, txt-something, и так далее...

Я также не могу установить двоичные файлы на сервере, я могу только использовать по умолчанию.

3
задан 18 July 2014 в 11:45
5 ответов

Может быть, вы могли бы использовать команду forfiles :

forfiles /p "c:\test" /m "*.txt" /c "cmd /c del @file"
4
ответ дан 3 December 2019 в 06:06

Быстрое решение, но прямо не отвечайте на вопрос:

rename *.txt_* *.nodelete
del *.txt
rename *.nodelete *.txt_bakcup
0
ответ дан 3 December 2019 в 06:06

Если я правильно понял вашу проблему, то это может быть полезно:

@echo off
setlocal EnableDelayedExpansion
set exclude=.log.sdb.sdk.bat.
for %%f in (*.*) do (
   if /I "%exclude%" == "!exclude:%%~Xf.=!" del "%%f"
)

Или

@echo off
forfiles /c "cmd /c if @isdir equ FALSE if /i not @ext==\"sdb\" if /i not @ext==\"sbk\" if /i not @ext==\"log\" if /i not @ext==\"bat\" del @file"

Для справки:

https://stackoverflow.com/questions/15401813/how-to-delete-all-files-.но-исключая-специфические-файлы-пачки-файлы

-1
ответ дан 3 December 2019 в 06:06

Я знаю, что отвечаю на вопрос не так, как ты хочешь, но... ... если вы можете использовать PowerShell, команда Remove-Item сделает все, что вам нужно.

Remove-Item *.txt

Greetings

Alex Rouge

0
ответ дан 3 December 2019 в 06:06

Основываясь на идее fquinto, но более надежно:

mkdir FilesToSave.AEEC869E-A480-4459-84AE-B20D47A967BC
move *.txt?* FilesToSave.AEEC869E-A480-4459-84AE-B20D47A967BC
del *.txt
move FilesToSave.AEEC869E-A480-4459-84AE-B20D47A967BC\*.* .
rmdir FilesToSave.AEEC869E-A480-4459-84AE-B20D47A967BC

*.txt?* подстановочный символ *.txt перемещает все файлы с расширением более 3-х символов, начиная с *.txt во временную директорию. Это файлы, 8.3 имени которых заканчиваются на .txt. Таким образом, в строке 3 вы удаляете только файлы с истинным расширением .txt, а в строке 4 вы восстанавливаете файлы, которые были бы случайно удалены.

GUID здесь для того, чтобы сделать временную директорию уникальной.

.
1
ответ дан 3 December 2019 в 06:06

Теги

Похожие вопросы