Board logo

标题: [文件操作] 批处理怎样批量修改文件创建时间? [打印本页]

作者: lifusen    时间: 2012-7-8 00:06     标题: 批处理怎样批量修改文件创建时间?

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

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

例 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 09:58

本帖最后由 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位旗舰版 测试成功
作者: Batcher    时间: 2023-12-16 17:39

批量把文件的【创建时间】修改为指定的时间戳
  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}"
复制代码

作者: wanghan519    时间: 2023-12-17 04:30

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

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

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

作者: ShowCode    时间: 2023-12-17 10:28

回复 4# wanghan519


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

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

所以,对于ext、ext2、ext3文件格式的文件, 文件创建时间其实是不存在的,若文件从创建后不曾修改过则可认为创建时间=修改时间,若文件创建后状态也不曾改变过文件属性,则可认为创建时间=状态更改时间,若文件创建后不曾被读取过则可认为创建时间=访问时间。但是很少有文件自创建后,从不被访问、修改。所以基本无法找到一个准确的创建时间,但是在ext4文件格式中,文件的创建时间保存在ext4文件系统的inode中,所以我们可以使用debugfs &stat命令来获取准确的文件创建时间。
作者: wanghan519    时间: 2023-12-17 11:19

回复 5# ShowCode


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




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2