如果我在 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
它也无法使用简单的 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)
这是包含文件的目录的图片:
像这样的脚本可以帮助您:
分解:
$(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选项卡)。