PowerShell可高效批量处理文件重命名、改后缀、调时间戳、统一大小写等操作,支持预演验证、正则精准匹配、两步法绕过NTFS限制、递归设置三时间戳及序号格式化命名。

你需要在Windows中对成百上千个文件执行重命名、改后缀、调时间戳或统一大小写等操作,手动点右键早已不现实,而PowerShell脚本能直接读取文件对象、精准控制每个属性、批量执行且支持预演验证。
批量修改文件扩展名
这一步必须先筛选再重命名,否则可能误改文件夹或非目标文件。
第一步:以管理员身份打开PowerShell,执行Set-Location "C:\your\folder"切换到目标目录。
第二步:运行预览命令,确认将要改动哪些文件:Get-ChildItem -Filter "*.txt" -File | ForEach-Object { Write-Host "将改为:" $_.BaseName ".log" }——只看不改,避免误操作。
第三步:真正执行时用正则确保只替换结尾的扩展名:Get-ChildItem -Filter "*.txt" -File | Rename-Item -NewName { $_.BaseName + ".log" } -WhatIf。注意这里用$_.BaseName而非$_.Name -replace,否则像ver.2.txt会被错改成ver.2.log而不是ver.2.log(正确),但若用-replace '\.txt$'就安全得多。
第四步:确认无误后删掉-WhatIf,并加上-ErrorAction SilentlyContinue跳过权限不足的文件。
把所有文件名转为小写
NTFS虽不区分大小写,但会“记住”你输入的大小写形式;直接重命名为全小写名会被系统判定为“重命名到同名”,导致失败或静默跳过。
方法一:两步法绕过系统限制(最稳妥)
先统一加临时后缀,再移除:Get-ChildItem -File | ForEach-Object { $temp = $_.Directory.ToString() + "\" + $_.BaseName.ToLower() + "_temp" + $_.Extension; Rename-Item $_.FullName $temp }; Get-ChildItem *_temp.* -File | ForEach-Object { $new = $_.Directory.ToString() + "\" + $_.BaseName.Substring(0, $_.BaseName.Length - 5) + $_.Extension; Rename-Item $_.FullName $new }
方法二:用Rename-Item配合-Force强制覆盖(仅限确认无同名冲突时):Get-ChildItem -File | Where-Object { $_.Name -cne $_.Name.ToLower() } | ForEach-Object { Rename-Item $_.FullName $_.Name.ToLower() -Force }。【关键前提:目标目录下不能已有同名小写文件,否则会被覆盖】
批量更新文件时间戳
资源管理器里只能单个改“修改时间”,而PowerShell可同时设置创建、最后写入、最后访问三个时间戳,且支持递归处理子目录。
执行以下命令即可将当前目录及所有子文件夹下的文件时间戳统一设为2024-01-01 09:00:$target = Get-Date "2024-01-01 09:00"; Get-ChildItem -Recurse -File | ForEach-Object { $_.CreationTime = $target; $_.LastWriteTime = $target; $_.LastAccessTime = $target }
注意:该操作不可逆,且不会弹出确认框。如需留痕,可在末尾加Write-Host "已更新:$($_.FullName)"实时打印路径。
按序号重命名文件(保留原扩展名)
系统自带右键重命名会加括号,而PowerShell可输出纯数字格式如photo_001.jpg,适合归档与自动化场景。
① 进入目标文件夹:Set-Location "D:\Photos"
② 执行编号脚本:$i=1; Get-ChildItem *.jpg | ForEach-Object { $new = "photo_{0:D3}{1}" -f $i, $_.Extension; Rename-Item $_.FullName $new; $i++ }
③ 这里{0:D3}确保序号为三位数(001、002…),避免排序错乱;若用$i++放在赋值后,第一个文件就是photo_001.jpg,逻辑清晰不跳号。











