FORFILES в пакетном режиме для удаления определенных файлов-суффиксов старше недели

FORFILES в пакетном режиме для удаления определенных файлов-суффиксов старше недели

Я хочу использовать FORFILES в пакетном режиме для удаления ТОЛЬКО txt(начинающихся с localhost_access_log) файлов (не подкаталогов) старше недели. Но я получаю%%t was unexpected at this time.

for %%t in (.txt) do forfiles /p "C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs\" /s /m *%%t /d -10 /c "cmd /c del @PATH"

решение1

for /f useback^tokens^=* %i in (`2^>nul forfiles /p "C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs\" /s /m "*.txt" /d -10 /c "cmd /c echo=@Path"`)do @echo\%~ni|findstr/bil localhost_access_log >nul && echo\ del/q /f "%~fi"

1.Недопустимая маска в:/m *%%t

The%%tявляется полным путем, это результирующий и 100% квалифицированный элемент из предыдущего цикла, но не маска для использования forfiles, даже если добавлена ​​к*, это не будет рассматриваться как маска.

2.Вы можете заменить/m *%%tк:

/m "*.txt"

3.Заменить Forна For /Fцикл:

for /f useback^tokens^=* %i in (`2^>nul forfiles /p "C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs\" /s /m "*.txt" /d -10 /c "cmd /c echo=@Path"`)do ...

4.Используйтеecho\FileNameчтобы проверить, совпадает ли оно с именем файла, который вы хотите удалить, используя перенаправление |с помощьюFindstr, и оператор&&( return 0) выполнитьdelесли имя совпадает:

@echo\%~ni|findstr/bil localhost_access_log >nul && echo\ del /q /f "%~i"

5.Проверьте и убедитесь, что вы удовлетворены. Если да, удалите echoфайл для его эффективного удаления.

@echo\%~ni|findstr/bil localhost_access_log >nul && del /q /f "%~i"

Наблюдение:- Используя Forцикл, вы можете расширить свою переменную:

    %~i   - expands %i removing any surrounding quotes (")
    %~fi  - expands %i to a fully qualified path file/dir name only
    %~ni  - expands %i to a file/dir name only
    %~xi  - expands %i to a file/dir extension only
    
    %%~nxi => expands %%~i to a file/dir name and extension
  • Use the FOR variable syntax replacement:
        %~pI        - expands %I to a path only
        %~nI        - expands %I to a file name only
        %~xI        - expands %I to a file extension only
  • The modifiers can be combined to get compound results:
        %~pnI       - expands %I to a path and file name only
        %~pnxI      - expands %I to a path, file name and extension only

Дополнительные ресурсы:

Связанный контент