吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1347|回复: 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] 纯文本查看 复制代码
@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] 纯文本查看 复制代码
@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订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-3-26 02:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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