吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 494|回复: 19
收起左侧

[其他求助] 批量修改文件时间

  [复制链接]
linyuyu 发表于 2025-2-13 10:37
30吾爱币
本帖最后由 linyuyu 于 2025-2-13 10:42 编辑

有什么工具多批量修改不同前缀名的时间戳 标题内有时间 就是不知道怎么批量修改

举例:

左_20240718_194359_zysgdmn666_.mp4

祖祖zuzu_20230712_193002_89861213247.mp4

周野子_20230827_182311_.mp4

枝子的淤青_20240921_192119_OOnelastkisss_.mp4



最佳答案

查看完整内容

[mw_shl_code=powershell,true]@echo off setlocal enabledelayedexpansion REM 创建“未成功”文件夹(如果不存在) if not exist "未成功" ( mkdir "未成功" ) REM 遍历当前目录下的所有.mp4文件 for %%f in (*.mp4) do ( REM 获取文件名(不含扩展名) set "filename=%%~nf" REM 提取第一个下划线后的部分 for /f "tokens=2,3 delims=_" %%a in ("!filename!") do ( set ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Shiliu2713 发表于 2025-2-13 10:37
linyuyu 发表于 2025-2-14 10:22
还有一个问题 针对部分文件可能修改不成功 能否将批量修改失败的文件放到其他文件夹 好能区分出来

[PowerShell] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@echo off
setlocal enabledelayedexpansion
 
REM 创建“未成功”文件夹(如果不存在)
if not exist "未成功" (
    mkdir "未成功"
)
 
REM 遍历当前目录下的所有.mp4文件
for %%f in (*.mp4) do (
    REM 获取文件名(不含扩展名)
    set "filename=%%~nf"
     
    REM 提取第一个下划线后的部分
      for /f "tokens=2,3 delims=_" %%a in ("!filename!") do (
        set "datetime=%%a%%b"
    )
 REM 检查是否成功提取时间
    if defined datetime (
 
    REM 将时间格式转换为YYYY-MM-DD HH:MM:SS
    set "year=!datetime:~0,4!"
    set "month=!datetime:~4,2!"
    set "day=!datetime:~6,2!"
    set "hour=!datetime:~8,2!"
    set "minute=!datetime:~11,2!"
    set "second=!datetime:~12,2!"
     
    set "newdate=!year!-!month!-!day!"
    set "newtime=!hour!:!minute!:!second!"
         
        REM 使用PowerShell修改文件的创建时间和修改时间(修复大括号转义)
        powershell -command "$file = Get-Item '%%f'; $newDateTime = [datetime]::ParseExact('!newdate! !newtime!', 'yyyy-MM-dd HH:mm:ss', [System.Globalization.CultureInfo]::InvariantCulture); $file.CreationTime = $newDateTime; $file.LastWriteTime = $newDateTime"
         
        REM 检查是否修改成功
        if errorlevel 1 (
            echo 修改失败: %%f
            REM 复制到“未成功”文件夹
            move "%%f" "未成功\%%~nxf"
        ) else (
            echo 已修改文件: %%f 的创建时间和修改时间为 !newdate! !newtime!
        )
    ) else (
        echo 无法提取文件名中的时间部分: %%f
        REM 复制到“未成功”文件夹
        move "%%f" "未成功\%%~nxf"
    )
)
 
 
echo 所有文件处理完成!
pause



你试试 未成功的话会放到同级未成功文件夹,一般是获取不到时间会移动到这里

免费评分

参与人数 1吾爱币 +1 收起 理由
linyuyu + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

Shiliu2713 发表于 2025-2-13 14:00
jack98 发表于 2025-2-13 14:24
 楼主| linyuyu 发表于 2025-2-13 15:30
Shiliu2713 发表于 2025-2-13 14:00
需求是啥,想具体怎么改 改成什么样

【标题】_【时间】_【内容】
就是如何根据第一个下划线的时间去批量修改全部文件的所属时间,因为各个文件的标题前缀不一样,我用的工具无法批量修改
Shiliu2713 发表于 2025-2-13 15:42
linyuyu 发表于 2025-2-13 15:30
【标题】_【时间】_【内容】
就是如何根据第一个下划线的时间去批量修改全部文件的所属时间,因为各个 ...

比如第一行的文件 左_20240718_194359_zysgdmn666_.mp4
把这个文件右键属性里面的修改时间,
改成 2024/07/18 19:43:59 这样的?  
 楼主| linyuyu 发表于 2025-2-14 08:08
Shiliu2713 发表于 2025-2-13 15:42
比如第一行的文件 左_20240718_194359_zysgdmn666_.mp4
把这个文件右键属性里面的修改时间,
改成 2024 ...

对对 就是很多文件我都这样命名的 因为迁盘问题 时间属性全乱了
ofo 发表于 2025-2-14 09:04
针对批量修改文件名中的时间戳问题,可以通过以下工具和脚本实现高效处理(支持Windows、Mac、Linux系统):

---

### **推荐工具 & 方法**
#### 1️⃣ **工具推荐:Advanced Renamer(免费)**
- **官网**:[https://www.advancedrenamer.com/](https://www.advancedrenamer.com/)
- **操作步骤**:
  1. 添加文件到软件。
  2. 使用「正则表达式」匹配时间戳:
     ```regex
     (\d{8}_\d{6})  # 匹配类似 20240718_194359 的时间戳
     ```
  3. 替换为自定义格式(如删除时间戳或修改格式):
     ```text
     左_zysgdmn666_.mp4  # 删除时间戳后的效果
     ```
  4. 预览并批量重命名。

![Advanced Renamer界面示例]()

---

#### 2️⃣ **Python脚本(灵活自定义)**
```python
import os
import re

# 定义正则匹配时间戳(格式:YYYYMMDD_HHMMSS)
pattern = re.compile(r'(\d{8}_\d{6})')

# 遍历文件
for filename in os.listdir('.'):
    if filename.endswith(".mp4"):
        # 提取各部分
        parts = re.split(r'_(\d{8}_\d{6})_', filename)
        if len(parts) >= 3:
            # 新文件名格式(示例:删除时间戳)
            new_name = f"{parts[0]}_{parts[2]}"
            os.rename(filename, new_name)
            print(f"Renamed: {filename} -> {new_name}")
```

---

#### 3️⃣ **PowerShell脚本(Windows专用)**
```powershell
Get-ChildItem *.mp4 | Rename-Item -NewName {
    # 匹配时间戳并删除
    $_.Name -replace '_(\d{8}_\d{6})_', '_'
}
```

---

### **操作示例**
#### 原始文件名:
```
左_20240718_194359_zysgdmn666_.mp4
祖祖zuzu_20230712_193002_89861213247.mp4
```

#### 处理后文件名(删除时间戳):
```
左_zysgdmn666_.mp4
祖祖zuzu_89861213247.mp4
```

---

### **扩展功能**
- **修改时间格式**:  
  若需将 `20240718_194359` 改为 `2024-07-18_19.43.59`,可在脚本中添加时间格式化逻辑。
- **保留部分时间戳**:  
  通过正则表达式分组控制保留内容(如只保留日期)。

---

### **注意事项**
1. **备份文件**:批量操作前建议先复制文件到测试目录。
2. **正则调试**:使用 [Regex101](https://regex101.com/) 测试正则表达式。

选择适合你的工具或脚本,5分钟内即可完成批量重命名!
Shiliu2713 发表于 2025-2-14 09:35
linyuyu 发表于 2025-2-14 08:08
对对 就是很多文件我都这样命名的 因为迁盘问题 时间属性全乱了

文件右键属性里面有三个时间 不知道你要改的是什么时间,我这个改的是【修改时间】
他还有创建时间和访问时间



[PowerShell] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo off
setlocal enabledelayedexpansion
 
REM 遍历当前目录下的所有.mp4文件
for %%f in (*.mp4) do (
    REM 获取文件名(不含扩展名)
    set "filename=%%~nf"
     
    REM 提取第一个下划线后的部分
      for /f "tokens=2,3 delims=_" %%a in ("!filename!") do (
        set "datetime=%%a%%b"
    )
     
    REM 将时间格式转换为YYYY-MM-DD HH:MM:SS
    set "year=!datetime:~0,4!"
    set "month=!datetime:~4,2!"
    set "day=!datetime:~6,2!"
    set "hour=!datetime:~8,2!"
    set "minute=!datetime:~11,2!"
    set "second=!datetime:~12,2!"
     
    set "newdate=!year!-!month!-!day!"
    set "newtime=!hour!:!minute!:!second!"
     
    REM 使用PowerShell修改文件的修改时间
    powershell -command "& { (Get-Item '%%f').LastWriteTime = [datetime]::ParseExact('!newdate! !newtime!', 'yyyy-MM-dd HH:mm:ss', [System.Globalization.CultureInfo]::InvariantCulture) }"
     
    echo 已修改文件: %%f 的修改时间为 !newdate! !newtime!
)
 
echo 所有文件修改完成!
pause
 楼主| linyuyu 发表于 2025-2-14 10:07
Shiliu2713 发表于 2025-2-14 09:35
文件右键属性里面有三个时间 不知道你要改的是什么时间,我这个改的是【修改时间】
他还有创建时间和访 ...

感谢 帮了大忙 创建时间和修改时间都需要
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-21 12:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表