更改大小写时,Windows 资源管理器不显示更新的名称(通过脚本显示多个文件)

Pau*_* K. 3 windows-explorer rename batch-rename windows-10

如果 Windows 资源管理器文件夹中有 5 个或更多文件,并且我使用仅更改大小写的脚本重命名它们,则资源管理器不会自动“刷新”并在打开的资源管理器窗口中显示新名称。如果我只重命名 1 到 4 个文件或者将名称中的字母更改为其他内容,它会自动刷新。

我必须在打开的资源管理器窗口中手动按“F5”才能查看新名称。有没有办法让资源管理器或 Windows 10 在脚本中自动刷新目录,这样我就不必按 F5?

这是一个示例批处理文件(rename.bat)

ren  file_important_stuff_1.txt  File_Important_Stuff_1.txt
ren  file_important_stuff_2.txt  File_Important_Stuff_2.txt
ren  file_important_stuff_3.txt  File_Important_Stuff_3.txt
ren  file_important_stuff_4.txt  File_Important_Stuff_4.txt
ren  file_important_stuff_5.txt  File_Important_Stuff_5.txt
Run Code Online (Sandbox Code Playgroud)

它也无法使用简单的 Python 脚本:

import os

for x in range(1,6):
    fileNameOld = "file_important_stuff_" + str(x) + ".txt"
    fileNameNew = "File_Important_Stuff_" + str(x) + ".txt"
    os.rename(fileNameOld,fileNameNew)
Run Code Online (Sandbox Code Playgroud)

这是包含文件的目录的图片:

在此输入图像描述

Des*_*666 6

像这样的脚本可以帮助您:

$windows = $(New-Object -ComObject Shell.Application).Windows()
$windows  | ? { $_.FullName -eq "C:\Windows\explorer.exe" -and $_.LocationURL -match "$path$" } | % { $_.Refresh() }
Run Code Online (Sandbox Code Playgroud)

分解:

  • $(New-Object -ComObject Shell.Application).Windows()- 为 Explorer/IE 创建 COM 对象并获取其活动窗口
  • $_.FullName -eq "C:\Windows\explorer.exe"- 仅过滤( )explorer.exe中的窗口的条件- 几乎所有 Windows 10+ 用户很可能会跳过此条件Where-Object?
  • $_.LocationURL -match "$path$"- 将您的路径(您可以将其作为脚本参数传递)与位置 URL 相匹配。从我注意到的情况来看,某些路径可能需要在匹配之前进行处理,例如%20在该字段中将空格转换为空格,但我无法快速找到完整的编码方法。$最后确保 URL 以您的路径结尾。您可以跳过此步骤,只需刷新所有资源管理器窗口即可。
  • $_.Refresh()Foreach-Object- 刷新( %)中的过滤窗口

从我所看到的情况来看,这仅适用于资源管理器的默认行为(例如,它看不到其他QTTabBar选项卡)。