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

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

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

我必须在打开 Explorer 窗口的情况下手动按“F5”才能看到新名称。有没有办法让 Explorer 或 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

它也无法与简单的 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)

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

在此处输入图片描述

答案1

这样的脚本可以帮助您:

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

分解:

  • $(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- 在( %)中刷新过滤窗口

这只适用于 Explorer 的默认行为(例如,它看不到其他选项卡栏标签)。

相关内容