如何获取文件或目录的标准化日期/时间戳。在纯批处理脚本中?

阿希普

Windows命令行中是否有一种方法可以以独立于标准语言环境的格式(例如ISO8601检索文件或目录的日期/时间戳(修改,创建,访问)?

我发现使用的输出dir依赖于系统的日期/时间格式,而缺少秒。参数()和变量扩展(
~t修饰符也是如此另外,变量依赖于系统设置(尽管后者也返回至少秒)。%~t1for%~tI
forfiles@fdate@ftime

我了解到这wmic OS GET LocalDateTime /VALUE是一种获取当前系统日期/时间的方法(输出可能看起来像LocalDateTime=20151021020000.000000+120,可以通过捕获for /F)。
但是是否还有一条命令(行)以类似的格式返回文件或目录的日期/时间戳?

恩波科马卡

在这里,您可以找到获取文件时间的方法。

1)对于目录,您可以使用以下WMIC查询:

@echo off
set "directory=."

for /f "delims=" %%# in ("%directory%") do set "directory=%%#"

set "directory=%temp%"
for /f "usebackq delims=" %%# in (`"WMIC path Win32_Directory WHERE name='%directory:\=\\%' get creationdate,LastAccessed,LastModified /format:value"`) do (
  for /f %%@ in ("%%#") do echo %%@
)

2)或JScript中混合(就像在文件版本也可以使用LastModifiedCreationDateLastAccessed):

@if (@X)==(@Y) @end /****** jscript comment ******
@echo off

set "directory=."
for %%# in (%directory%) do set "directory=%%~f#"
if exist "%directory%\" (

 cscript //E:JScript //nologo "%~f0" "%directory%"
)
exit /b %errorlevel%

****** end of jscript comment ******/

var file_loc = WScript.Arguments.Item(0);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var the_file=fso.GetFolder(file_loc);
var the_date= new Date(the_file.DateLastModified);
WScript.Echo(the_date.getFullYear());
WScript.Echo(the_date.getMonth());
WScript.Echo(the_date.getUTCDate());

3)使用自动编译的jscript.net(由于.NET格式化功能,它可能是最强大的选项):

@if (@X)==(@Y) @end /****** start of jscript comment ******

@echo off
::::::::::::::::::::::::::::::::::::
:::       compile the script    ::::
::::::::::::::::::::::::::::::::::::
setlocal
if exist "%~n0.exe" goto :skip_compilation

set "frm=%SystemRoot%\Microsoft.NET\Framework\"
:: searching the latest installed .net framework
for /f "tokens=* delims=" %%v in ('dir /b /s /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
    if exist "%%v\jsc.exe" (
        rem :: the javascript.net compiler
        set "jsc=%%~dpsnfxv\jsc.exe"
        goto :break_loop
    )
)
echo jsc.exe not found && exit /b 0
:break_loop


call %jsc% /nologo /out:"%~n0.exe" "%~dpsfnx0"
::::::::::::::::::::::::::::::::::::
:::       end of compilation    ::::
::::::::::::::::::::::::::::::::::::
:skip_compilation



set "directory=."
for %%# in (%directory%) do set "directory=%%~f#"


"%~n0.exe" "%directory%"


exit /b 0


****** end of jscript comment ******/
import System;
import System.IO;

var arguments:String[] = Environment.GetCommandLineArgs();

var the_dir=arguments[1];

var last_modified=Directory.GetLastWriteTime(the_dir);
Console.WriteLine("modified time "+last_modified.ToString("yyyy-MM-dd"));

var created=Directory.GetCreationTime(the_dir);
Console.WriteLine("created time "+created.ToString("yyyy-MM-dd"));

var accessed=Directory.GetLastAccessTime(the_dir);
Console.WriteLine("accessed time "+accessed.ToString("yyyy-MM-dd"));

编辑这里准备使用列出的所有方法来使用参数化脚本:

  1. fileModifiedTime.bat -获取文件与设置独立的最后修改时间format.Based上ROBOCOPY
  2. fileTimes.bat-使用WMIC获取文件时间戳
  3. dirTimes.bat-使用WMIC获取目录时间戳
  4. fileTimesJS.bat-使用jscript的文件时间戳
  5. dirTimesJS.bat-使用jscript的目录时间戳
  6. fileTimesNET.bat -文件时间戳与.NET
  7. dirTimesNET.bat - DIR时间戳与.NET

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取文件或目录的标准化日期/时间戳。在纯批处理脚本中?

来自分类Dev

如何通过批处理文件中的时间戳识别/获取文件?

来自分类Dev

使用批处理脚本在目录中获取文件名

来自分类Dev

如何从Windows批处理脚本中的文件路径获取父目录名称?

来自分类Dev

如何使用批处理脚本遍历目录中的文件

来自分类Dev

标准化日期时间对象

来自分类Dev

标准化日期时间对象

来自分类Dev

如何从包含时间戳的日志文件中获取日期值

来自分类Dev

在Windows中的目录层次结构中获取在日期/时间戳之后创建的新文件/目录

来自分类Dev

Powershell 批处理文件夹重命名项目 - 限制长度和标准化

来自分类Dev

批处理文件中的时间戳未正确更新

来自分类Dev

如何使用纯批处理从单行 XML 文件中获取多个属性值?

来自分类Dev

使用带有时间戳的批处理脚本创建目录

来自分类Dev

使用带有时间戳的批处理脚本创建目录

来自分类Dev

在批处理脚本中获取特定路径的父目录

来自分类Dev

在批处理脚本中获取父目录的名称

来自分类Dev

如何标准化 OPUS 文件的音量

来自分类Dev

标准化AVI文件中的音频

来自分类Dev

批处理脚本:从未知目录中查找并复制文件?

来自分类Dev

如何使用批处理脚本对目录中的每个文件进行操作

来自分类Dev

如何使用批处理脚本反复将最旧的文件移动到目录中?

来自分类Dev

如何标准化熊猫中的行?

来自分类Dev

如何从时间戳获取日期

来自分类Dev

具有时间戳的批处理脚本移动文件

来自分类Dev

如何从PHP中的日期获取仅时间时间戳

来自分类Dev

如何通过批处理文件获取特殊目录列表?

来自分类Dev

Windows批处理命令为文件分配特定的时间/日期戳

来自分类Dev

从批处理脚本中的文件中获取文本

来自分类Dev

我可以在WinSCP批处理脚本中引用批处理文件目录吗?

Related 相关文章

  1. 1

    如何获取文件或目录的标准化日期/时间戳。在纯批处理脚本中?

  2. 2

    如何通过批处理文件中的时间戳识别/获取文件?

  3. 3

    使用批处理脚本在目录中获取文件名

  4. 4

    如何从Windows批处理脚本中的文件路径获取父目录名称?

  5. 5

    如何使用批处理脚本遍历目录中的文件

  6. 6

    标准化日期时间对象

  7. 7

    标准化日期时间对象

  8. 8

    如何从包含时间戳的日志文件中获取日期值

  9. 9

    在Windows中的目录层次结构中获取在日期/时间戳之后创建的新文件/目录

  10. 10

    Powershell 批处理文件夹重命名项目 - 限制长度和标准化

  11. 11

    批处理文件中的时间戳未正确更新

  12. 12

    如何使用纯批处理从单行 XML 文件中获取多个属性值?

  13. 13

    使用带有时间戳的批处理脚本创建目录

  14. 14

    使用带有时间戳的批处理脚本创建目录

  15. 15

    在批处理脚本中获取特定路径的父目录

  16. 16

    在批处理脚本中获取父目录的名称

  17. 17

    如何标准化 OPUS 文件的音量

  18. 18

    标准化AVI文件中的音频

  19. 19

    批处理脚本:从未知目录中查找并复制文件?

  20. 20

    如何使用批处理脚本对目录中的每个文件进行操作

  21. 21

    如何使用批处理脚本反复将最旧的文件移动到目录中?

  22. 22

    如何标准化熊猫中的行?

  23. 23

    如何从时间戳获取日期

  24. 24

    具有时间戳的批处理脚本移动文件

  25. 25

    如何从PHP中的日期获取仅时间时间戳

  26. 26

    如何通过批处理文件获取特殊目录列表?

  27. 27

    Windows批处理命令为文件分配特定的时间/日期戳

  28. 28

    从批处理脚本中的文件中获取文本

  29. 29

    我可以在WinSCP批处理脚本中引用批处理文件目录吗?

热门标签

归档