PowerShell技术求助:如何按文件名移动多格式图片文件
PowerShell按文件名批量移动图片的修正方案
你的脚本失效主要有两个关键问题:
-filter *.是无效写法,PowerShell不识别这种格式,要匹配所有类型文件,直接去掉这个参数即可Select-String是用来搜索文件内容的工具,不是筛选文件名的,用它根本找不到你要的文件
下面是修正后的脚本,直接用文件名匹配逻辑:
$source = "你的源文件夹路径" # 替换成实际路径,比如C:\Images\Source $dest = "你的目标文件夹路径" # 替换成实际路径,比如C:\Images\Target # 获取源文件夹下所有文件(含子文件夹),筛选文件名包含指定关键词的文件 Get-ChildItem $source -Recurse -File | Where-Object { $_.Name -match "Image1|Image2|Image3" } | ForEach-Object { # 移动文件,-Force参数会自动创建不存在的目标文件夹 Move-Item -Path $_.FullName -Destination $dest -Force }
额外说明:
- 如果你想先测试移动逻辑(不实际移动文件),可以在
Move-Item后面加-WhatIf参数,执行后会显示哪些文件会被移动 - 如果目标文件夹下有同名文件,默认会提示覆盖,要是想直接覆盖,
-Force参数已经包含在上面的脚本里 -match后面的Image1|Image2|Image3是正则表达式的或逻辑,只要文件名包含其中任意一个关键词就会被匹配
内容的提问来源于stack exchange,提问作者hmtl
相关产品推荐
相关产品推荐

