批处理修改文件创建时间-与微软小冰的一次愉快聊天

批处理修改文件创建时间-与微软小冰的一次愉快聊天

编码文章call10242025-07-08 13:45:132A+A-

#暑期创作大赛#

昨天看到网上有人在问如何批量修改文件的创建时间,刚好我也不会,想到最近爆火的微软“小冰”——new bing,被集成到Microsoft Edge浏览器,何不问问它呢?

我:批处理修改文件创建时间为当前系统时间

小冰:批处理推荐下面的代码,filename是要修改的文件名,txt是文件扩展名。

copy /b filename.txt+,,

我:多个文件呢?

小冰:批处理修改多个文件的创建时间为当前系统时间,可以使用for语句来遍历,下面是代码

@echo off
setlocal
for /r folder \ %%a in (*.*) do (
copy /b "%%a"+,, "%%a"
)
endlocal
pause

我:能解释下代码吗?

小冰:这个批处理脚本的作用是修改当前目录下所有文件的创建时间为当前系统时间。下面是对脚本每一行的解释:

@echo off:关闭命令回显,使脚本运行时不会在命令提示符窗口中显示命令。


setlocal:开始本地化环境变量更改,即在脚本运行结束后,对环境变量所做的更改不会影响当前命令提示符窗口。


for /r folder\ %%a in (*.*) do (:对当前目录下所有 .txt 文件进行循环处理。


copy /b "%%a"+,, "%%a":使用 copy 命令将文件复制到自身,其中 /b 表示以二进制方式处理文件,+,, 表示追加一个空字符串并更新文件的时间戳。


):结束循环处理。


endlocal:结束本地化环境变量更改。


希望这些解释能帮助您更好地理解这个脚本的作用和运行方式。如果您有其他问题,欢迎随时咨询。

我:+,,能详细解释下吗?

小冰:`+,,` 是 `copy` 命令中用来更新文件时间戳的一个技巧。


在 `copy` 命令中,`+` 表示要将多个文件合并为一个文件。


在这种情况下,我们只指定了一个文件,后面紧跟着 `,,`,这表示我们要将一个空字符串追加到文件的末尾。


由于我们使用了 `/b` 选项来指定以二进制方式处理文件,所以实际上并不会向文件中添加任何内容。

这样,`copy /b "%%a"+,, "%%a"` 命令的作用就是将文件复制到自身,同时更新文件的时间戳,使其变为当前系统时间。


希望这个解释能帮助您更好地理解这个命令的作用。

我:setlocal 和endlocal 有什么作用呢?

小冰:在批处理文件中更改环境变量可以让你在运行批处理文件时临时更改程序的运行方式。


例如,你可能希望在运行批处理文件时更改 PATH 环境变量,以便程序能够找到特定目录中的可执行文件。


使用 setlocal 和 endlocal 命令可以让你在批处理文件中临时更改环境变量,而不会影响计算机上其他程序的运行。

我:批处理修改多个文件创建时间为指定时间呢?

小冰:推荐使用下面的批处理代码 ,保存为bat文件,放在要修改的文件夹同级目录下,folder是要修改的文件夹名。

@ECHO OFF

powershell.exe -command "ls 'folder\*.*' | foreach-object { $_.LastWriteTime = Get-Date ; $_.CreationTime = '2018/01/01 19:00:00' }"

PAUSE

我:要是Powershell下的系统时间呢?

小冰:批处理powershell 修改多个文件创建时间为系统时间,推荐以下代码

@ECHO OFF

powershell.exe -command "ls 'folder\*.*' | foreach-object { $_.LastWriteTime = Get-Date ; $_.CreationTime = Get-Date }"

PAUSE

结语:微软聊天机器人小冰——new bing显示出了AI的潜质,给出的代码确实可用,也相当简洁,对代码的解释相当到位。也能理解中文语言环境下的情境语言(在情境中运用的非完整语言),结合bing搜索能达到很好的人机交互目的。而且,多次搜索甚至可以给出多个解决方案,不是千篇一律,这点很是难得。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4