Batch file 如何获取上次使用批处理脚本创建的文件时间

Batch file 如何获取上次使用批处理脚本创建的文件时间,batch-file,cmd,windows-scripting,Batch File,Cmd,Windows Scripting,我有一个文件夹,其中包含另一个子文件夹,该子文件夹包含不同的文件扩展名 现在我想使用批处理脚本来提取子文件夹中该文件的名称和时间 我试图检索位于子文件夹中的文件的时间,但失败 我只想在批处理脚本中使用此代码。使用变量引用替换/?,可以通过任何其他命令或调用更改echo 命令行 for %f in (filepath\pattern) do echo "%f : %~tf" 在脚本中,百分号必须为双精度 for %%f in (filepath\pattern) do ech

我有一个文件夹,其中包含另一个子文件夹,该子文件夹包含不同的文件扩展名

现在我想使用批处理脚本来提取子文件夹中该文件的名称和时间

我试图检索位于子文件夹中的文件的时间,但失败


我只想在批处理脚本中使用此代码。

使用变量引用替换/?,可以通过任何其他命令或调用更改echo

命令行

for %f in (filepath\pattern) do echo "%f : %~tf"
在脚本中,百分号必须为双精度

for %%f in (filepath\pattern) do echo "%%f : %%~tf"
评论后编辑 这里是一个如何使用标签模拟函数和避免扩展技巧的示例,请注意,标签并不完全是在正常流程中执行的函数,这就是为什么要跳过goto:main:process并返回goto:eof

@echo off

goto :main

:process
echo file name is: %~1 and time is %~2
goto :eof


:main
for %%x in (AppData\Local\*.*) do call :process "%%x" "%%~tx"
但批处理脚本命令集非常有限,还应注意,日期和时间输出无法格式化,并且依赖于系统语言设置

如果可以使用powershell,那么值得花时间学习。 不同的文件时间属性:

$file.CreationTime
$file.CreationTimeUtc
$file.LastAccessTime
$file.LastAccessTimeUtc
$file.LastWriteTime
$file.LastWriteTimeUtc

为什么要标记sql server?SETLOCAL ENABLEDELAYEDEXPANSION set/p oname=输入文件名::for/D%%a in*do set var=%%a回显服务器名为:!变量!>>%oname%&echo.>>%oname%用于%%a*中的/R/D%%b执行设置变量1=%%%b设置变量2=%%~nb回显的子文件夹!瓦尔!是:!var2!>>%oname%&echo.>>%oname%for/f%%x in'DIR/A-D/B/OD/T:C%%B*.bak'do set bakFile=%%%x set BakTime=%%~tx echo最新的bak文件名和时间是!bakFile!>>%oname%!BakTime!>>%oname%SET bakFile=endlocal请不要在注释中发布代码!你的问题放在那里-正确!修改器~z返回大小,但您自己也注意到了。我会在回声中加上@,以减少混乱output@LotPings,谢谢你的反馈,这只是一个example@NahuelFouilleulI已尝试,但它从文件夹中获取了文件的唯一名称,但未创建日期此处是/f%%x in'DIR/A-D/B/OD/T:C%%B*.bak'do set bakFile=%%x set BakTime=%%~tx的for循环,其中%%B正在向上移动该文件目录路径。您的设置语法不正确,批处理命令分隔符为&。另外由于变量扩展bakFile和bakTime将很难使用,更容易的是使用函数调用、更新