gpt4 book ai didi

batch-file - Windows 中的这个批处理命令有什么问题?

转载 作者:行者123 更新时间:2023-12-03 17:52:41 36 4
gpt4 key购买 nike

FOR %%F IN (E:\backups\7DbBackup_local\*.bak) DO IF %%~tF == (time /t) echo %%F

如果修改日期年/月/日等于当前年/月/日,这应该打印文件名

最佳答案

%%~t 为您提供文件的日期时间,如下所示:

23/03/2011 04:27 PM

但即使是 this 也可能是特定于语言环境的。

另一方面,time/t 给你 03:57 PMdate/t 给你 Wed 22/06/2011两者均不可用作匹配项。

如果你想匹配它们,你必须做一些字符串技巧来仅从 %%~t(去掉时间)和 date 中获取日期/t(去掉日期名称)。

或者您可以省去麻烦,忘掉我喜欢称之为 cmd-gymnastics 的奇怪事件,并使用体面的 find 实用程序,或者通过下载 CygWin或者使用更轻量级的 GnuWin32工具(搜索 FindUtils)。


如果您必须使用cmd,您可以从以下开始:

@setlocal enableextensions enabledelayedexpansion
@echo off

rem Get todays date

for /f "tokens=1,2,*" %%a in ('date /t') do set today=%%b
echo %today%

rem Process each file in turn.

for %%a IN (.\*) do call :procFile "%%a" %%~ta

endlocal
goto :eof

:procFile
if %2==%today% echo %2 %1
goto :eof

但请再次记住,如果您的区域设置信息发生变化,这可能会中断。几年前我写了一个脚本绕过这些程序使用 WMI 获得更准确的信息:

for /f "skip=2 tokens=2-7 delims=," %%A in ('wmic path win32_localtime get day^,hour^,minute^,month^,second^,year^ /format:csv') do (
set /a mydate = 10000 * %%F + 100 * %%D + %%A
set /a mytime = 10000 * %%B + 100 * %%C + %%E
)
set mydate=00000000%mydate%
set mydate=%mydate:~-8%
set mytime=000000%mytime%
set mytime=%mytime:~-6%

这会为您提供格式为 YYYYMMDDHHMMSS 的日期和时间,但您可以调整它以提供其他值。

关于batch-file - Windows 中的这个批处理命令有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436590/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com