Удалить самый старый файл в каталоге Windows - PullRequest
0 голосов
/ 07 июня 2018

Я работаю над пакетным сценарием, который находит и самые старые файлы в папке и удаляет их, оставляя только самый последний файл.Мне удалось собрать следующий скрипт, но мне не удалось заставить оператор if работать правильно.

@echo off
set cnt=0
for %%A in (C:\Test\*) do set /a cnt+=1
echo File count = %cnt%

pause

echo if "%cnt%"=="1" (breakLoop)
echo if "%cnt%" == "1" ( echo %cnt% file(s) remain! )
pause
:: if "%cnt%" == "1" ( 
:: echo %cnt% file(s) remaining! 
:: )


for /f "delims=" %%a in ('dir /b /a-d /t:w /o:d "C:\Test\*.*"') do (
    echo del "C:\Test\%%a"
     del "C:\Test\%%a"
    )
pause
:breakLoop

Скрипт точно отображает количество файлов в папке, что подтверждаетсяс эхом.Я собираюсь зациклить сценарий, пока не останется только один файл, но командная строка завершит работу после второй паузы.

Я специально добавил точки с запятой, чтобы указать, где это не так.

1 Ответ

0 голосов
/ 07 июня 2018

Не вижу точек с запятой!Я вижу двоеточия, но не точки с запятой.

echo if "%cnt%"=="1" (breakLoop)

Если echo был удален, если cnt был 1, то это попыталось бы выполнить breakloopВам нужно goto breakloop, чтобы перейти к метке :breakloop.

echo if "%cnt%" == "1" ( echo %cnt% file(s) remain! )

Странная вещь о ) - она ​​завершает предыдущий уровень скобок, но ( в операторе echo считаетсякак обычный текстовый символ.Чтобы первый ) интерпретировался как нормальный символ, вам нужно экранировать его с помощью символа ^, например: ^)

Если вы запустили этот пакет из приглашения, а не щелкнули по нему, выувидит жалобу cmd на синтаксис.

Что касается for /f - ну, если бы вы использовали /o-d для сортировки в обратном -дате, то первая найденная строка - это файл, который вы хотите сохранить .

Чтобы увидеть синтаксис for, выполните for /? из приглашения.Вы найдете удобную опцию skip, чтобы пропустить первые n строк списка перед обработкой, поэтому, если бы вы пропустили первую строку с skip=1, вы бы сохранили младшую и убили оставшуюся часть..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...