[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样批量修改文件创建时间?

如何将文件的【创建时间】修改成文件的【修改时间】

以修改时间为基数,修改文件的时间类型为:修改时间=创建时间

例 123.txt :
创建时间:2012年4月26日
修改时间:2012年3月13日
访问时间:2012年4月26日

修改 123.txt  为:
创建时间:2012年3月13日
修改时间:2012年3月13日
访问时间:2012年4月26日

本帖最后由 apang 于 2012-7-8 12:22 编辑

命令行工具TimeBack.exehttp://bbs.bathome.net/viewthread.php?tid=8242
比如修改某文件夹下所有txt文件的创建时间,将TimeBack.exe和P保存在该文件夹下:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  3.   for /f "tokens=2 delims=:" %%b in ('TimeBack /f "%%a"^|find "修改时间"') do (
  4.     TimeBack /f "%%a" /t %%b -c >nul
  5.   )
  6. )
复制代码
Win7 32位旗舰版 测试成功

TOP

批量把文件的【创建时间】修改为指定的时间戳
  1. @echo off
  2. REM 设置待修改的文件所在的目录
  3. set "MyFolder=C:\Test\测试"
  4. REM 假设需要修改的是txt文件
  5. powershell -c "Get-Childitem -Path '%MyFolder%\*.txt' | ForEach-Object {$_.CreationTime = '2023-12-16 17:28'}"
复制代码
批量把文件的【创建时间】修改【修改时间】
  1. @echo off
  2. REM 设置待修改的文件所在的目录
  3. set "MyFolder=C:\Test\测试"
  4. REM 假设需要修改的是txt文件
  5. powershell -c "Get-Childitem -Path '%MyFolder%\*.txt' | ForEach-Object {$_.CreationTime = $_.LastWriteTime}"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 wanghan519 于 2023-12-17 04:45 编辑

创建时间这东西比较神奇,好像是ntfs有个创建时间,可以修改,还有个inode change时间也是创建时间,这个不能改,好像只能修改系统时间后创建新的硬链接,再删掉原来的文件,这东西还不是指modify时间或access时间,反正现在比较迷惑,右键属性这个创建时间是不是还和文件系统的类型有关。。。

简单的说就是,在windows里即使修改了creationtime,还是可以查出来ctime这个创建时间,不等于creationtime。。。什么鬼

TOP

回复 4# wanghan519


https://www.cnblogs.com/kerrycode/p/10441997.html

Linux的文件能否找到文件的创建时间取决于文件系统类型,在ext4之前的早期文件系统中(ext、ext2、ext3),文件的元数据不会记录文件的创建时间,它只会记录访问时间、修改时间、更改时间(状态更改时间)。

  • Access 是访问时间,文件数据的最后访问时间。例如读文件内容
  • Modify 是修改时间,文件数据的最后修改时间。例如使用VIM修改文件内容
  • Change 是状态更改时间,这个跟Modify时间很容易混淆,change time:更改文件的属性便会更新该时间,比如使用chmod命令更改文件属性,例如chmod、chown命令。或者执行其他命令时隐式的附带更改了文件的属性若文件大小等。

所以,对于ext、ext2、ext3文件格式的文件, 文件创建时间其实是不存在的,若文件从创建后不曾修改过则可认为创建时间=修改时间,若文件创建后状态也不曾改变过文件属性,则可认为创建时间=状态更改时间,若文件创建后不曾被读取过则可认为创建时间=访问时间。但是很少有文件自创建后,从不被访问、修改。所以基本无法找到一个准确的创建时间,但是在ext4文件格式中,文件的创建时间保存在ext4文件系统的inode中,所以我们可以使用debugfs &stat命令来获取准确的文件创建时间。
测试代码之前请做好备份

TOP

回复 5# ShowCode


    这么一说更复杂了
上图是在win10里,改了creationtime后,changetime还是原来的时间
如果说ext4还有个创建时间,我在ext4里用pwsh改creationtime后,发生改变的反倒是mtime,太乱了

TOP

返回列表