Quiero usar FORFILES en lotes para eliminar SOLO localhost_access_log
archivos txt (comenzando con) (no subdirectorios) con más de una semana. pero estoy consiguiendo%%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"
Respuesta1
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.No es una máscara válida en:/m *%%t
El%%t
es una ruta completa, es un elemento resultante y 100% calificado del bucle anterior, pero no una máscara para uso de forfiles
, incluso si se agrega a*
, no será tratada como una máscara.
2.puedes reemplazar/m *%%t
a:
/m "*.txt"
3.Reemplazar For
al For /F
bucle:
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.Utilice unecho\FileName
para comprobar si coincide con el nombre del archivo que desea eliminar, utilizando una redirección |
conFindstr
y el operador&&
( return 0
) ejecutardel
si el nombre coincide:
@echo\%~ni|findstr/bil localhost_access_log >nul && echo\ del /q /f "%~i"
5.Pruebe y confirme que, si está satisfecho, elimine echo
el archivo para eliminarlo de manera efectiva.
@echo\%~ni|findstr/bil localhost_access_log >nul && del /q /f "%~i"
Obs.:- Usando un For
bucle puedes expandir tu variable:
%~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
Recursos adicionales:
Del /?
Echo /?
For /?
For /F /?
Forfiles /?
- Redirección
|
,<
,>
,2>
, etc.
- Ejecución condicional || &&...