pudo - ¿Cómo obtener la última fecha de modificación del archivo en la línea de comandos de Windows?
comandos de cmd para hackear (6)
He estado usando el siguiente comando para obtener la fecha del archivo. Sin embargo, la variable fileDate
ha estado devolviendo un valor en blanco desde que nos mudamos a un servidor diferente (Windows Server 2003).
FOR /f %%a in (''dir myfile.txt^|find /i " myfile.txt"'') DO SET fileDate=%%a
¿Hay alguna otra forma más confiable de obtener la fecha del archivo?
¿Qué salida (exactamente) da dir myfile.txt
en el directorio actual? ¿Qué pasa si configura los delimitadores?
FOR /f "tokens=1,2* delims= " %%a in (''dir myfile.txt^|find /i " myfile.txt"'') DO SET fileDate=%%a
(note el espacio después de delims=
)
(para hacer la vida más fácil, puede hacerlo desde la línea de comandos reemplazando %%a
con %a
)
Cambie %
a %%
para usar en el archivo por lotes, para la sintaxis %~ta
ingrese call /?
for %a in (MyFile.txt) do set FileDate=%~ta
Funciona para mí en Vista. Algunas cosas para probar:
Reemplace
find
con la ruta completa del comando find.find
es un nombre de herramienta común. Hay una búsqueda de Unix que es muy diferente de la búsqueda incorporada de Windows. Me gusta esto:
FOR /f %%a in (''dir ^|%windir%/system32/find.exe /i "myfile.txt"'') DO SET fileDate=%%a
Examine la salida del comando en una ventana cmd.exe. Para hacer eso, necesitas reemplazar el %% con%.
FOR /f %a in (''dir ^|c:/windows/system32/find.exe /i "myfile.txt"'') DO SET fileDate=%a
Eso puede darte algunas ideas.Si eso aparece como en blanco, entonces nuevamente, en un símbolo del sistema, intente esto:
dir | c:/windows/system32/find.exe /i "myfile.txt"
Esto debería mostrarte lo que necesitas ver.
Si aún no puedes entenderlo, edita tu publicación para incluir lo que ves en estos comandos y alguien te ayudará.
La referencia útil para obtener las propiedades del archivo utilizando un archivo por lotes, incluida, es la última vez que se modificó:
FOR %%? IN ("C:/somefile/path/file.txt") DO (
ECHO File Name Only : %%~n?
ECHO File Extension : %%~x?
ECHO Name in 8.3 notation : %%~sn?
ECHO File Attributes : %%~a?
ECHO Located on Drive : %%~d?
ECHO File Size : %%~z?
ECHO Last-Modified Date : %%~t?
ECHO Drive and Path : %%~dp?
ECHO Drive : %%~d?
ECHO Fully Qualified Path : %%~f?
ECHO FQP in 8.3 notation : %%~sf?
ECHO Location in the PATH : %%~dp$PATH:?
)
Puedes hacerlo
forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime"
También puede obtener una fecha de modificación de archivos usando vbscript
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
WScript.Echo objFS.GetFile(strFile).DateLastModified
guarda lo anterior como mygetdate.vbs y en la línea de comandos
c:/test> cscript //nologo mygetdate.vbs myfile