返回
如何使用批处理脚本修改指定文件夹的修改时间
windows
2024-03-27 08:22:29
修改指定文件夹的修改时间
前言
管理文件的日期和时间戳对于各种任务至关重要,例如版本控制、文件归档和法务合规。Windows 批处理脚本为自动化此类任务提供了一种简单且强大的方法。在本教程中,我们将探讨如何编写一个批处理脚本,根据给定的路径,将指定文件夹的修改时间更改为最近的日期和时间。
获取当前日期和时间
脚本的第一步是获取当前日期和时间。我们可以使用 date
和 time
命令来实现这一点:
@echo off
setlocal enabledelayedexpansion
set _now=%date:~4,2%-%date:~7,2%-%date:~10,4% %time:~0,2%:%time:~3,2%
这会将当前日期和时间存储在 _now
变量中,格式为 YY-MM-DD HH:MM
。
遍历给定路径中的文件夹
接下来,我们需要遍历给定的路径并查找所有文件夹:
for /d %%d in ("%~1\*\") do (
call :update-folder-datetime "%%d"
)
此代码使用 for /d
循环迭代给定路径 (%~1
) 中的所有文件夹 (%%d
)。然后,它调用 update-folder-datetime
函数来更新每个文件夹的修改时间。
更新文件夹的修改时间
update-folder-datetime
函数执行以下操作:
- 获取文件夹的当前修改时间:
set _folderDate=%~t~\_folder~
- 将当前修改时间与我们获取的当前时间进行比较:
if "!_folderDate!" NEQ "!_modDate!" (
- 如果文件夹的修改时间不等于当前时间,则:
- 获取文件夹的原始修改时间:
"dir /O:D /T:D "_folder">"%temp%\__mod-date__"".txt
- 计算新修改时间:
set /a _newModDate="!_modDate:~0,4!-%_modDate:~5,2!-%_modDate:~8,2! %_now:~11,9%"
- 更新文件夹的修改时间:
powershell -command 'Set-ItemProperty -Path "'_folder'" -Name LastWriteTime -Value "!_newModDate!""'
示例脚本
以下是完整脚本的一个示例:
@echo off
setlocal enabledelayedexpansion
set _now=%date:~4,2%-%date:~7,2%-%date:~10,4% %time:~0,2%:%time:~3,2%
for /d %%d in ("M:\Test\*") do (
call :update-folder-datetime "%%d"
)
pause
goto :EOF
:update-folder-datetime
set _folder=%1
set _folderDate=%~t~\_folder~
set _modDate=%_now:~0,10%
if "!_folderDate!" NEQ "!_modDate!" (
"dir /O:D /T:D "_folder">"%temp%\__mod-date__"".txt
set _originalModDate=%_now:~0,10%-%_now:~11,9%
for /f "tokens=4,5 delims=/" %%i in ("%temp%\__mod-date__"".txt") do set _originalModDate=%%i/%%j
set /a _newModDate="!_modDate:~0,4!-%_modDate:~5,2!-%_modDate:~8,2! %_now:~11,9%"
powershell -command 'Set-ItemProperty -Path "'_folder'" -Name LastWriteTime -Value "!_newModDate!""'
)
常见问题解答
- 如何使用此脚本?
- 将脚本复制到一个
.bat
文件中。 - 用要修改其修改时间的文件夹的路径替换
M:\Test
。 - 双击
.bat
文件运行脚本。
- 如何更改日期和时间格式?
- 可以在
set _now
行中调整日期和时间格式。 - 有关更多详细信息,请参阅
date
和time
命令的文档。
- 如何处理包含空格的路径?
- 用双引号引起来包含空格的路径。
- 例如:
for /d %%d in ("M:\Path With Spaces\*") do ( ... )
- 我收到一条错误消息,说 PowerShell 没有安装。
- 确保已在计算机上安装 PowerShell。
- 如果没有,请从 Microsoft 网站下载并安装它。
- 脚本没有更新文件夹的修改时间。
- 确保您有权修改文件夹。
- 检查脚本是否存在语法错误。
- 尝试使用不同的日期和时间格式。