PowerShell复制指定文件名图片无效果,请求排查错误原因
你的PowerShell代码问题分析及修正
先列你代码里的几个关键错误:
- 变量拼写混乱:
$Filname、$Filnename都是拼写错误,全程要统一用$Filename,不然PowerShell识别不到正确变量 - Get-ChildItem没指定源路径:你没加
-Path $ImageSource,默认会在当前执行脚本的目录找文件,不是你指定的c:\Folder - 循环里用错变量:
ForEach-Object里你用的是$Filename(整个数组),应该用$_指代当前循环的单个文件名 - 匹配逻辑不对:用
-match是正则匹配,如果你要完全匹配文件名(不含后缀),用-eq更准确;另外拆分后的文件名可能带空格,得先去掉前后空白 - 路径不规范:
$USBFolder = "F:"最好改成"F:\",避免PowerShell解析路径时出问题 - 代码语法问题:变量赋值后没换行或加分号,会导致语法错误
修正后的代码:
# 定义路径 $USBFolder = "F:\" $ImageSource = "c:\Folder" # 拆分并清理输入的文件名(去掉空格) $FilenameList = $Textbox.Text -split ',' | ForEach-Object { $_.Trim() } # 循环复制指定文件 $FilenameList | ForEach-Object { $targetName = $_ Get-ChildItem -Path $ImageSource -Filter *.jpg | Where-Object { $_.BaseName -eq $targetName } | Copy-Item -Destination $USBFolder -Force }
额外说明:如果你的文本框里输入的是带.jpg后缀的完整文件名,就把$_.BaseName改成$_.Name,用-eq匹配完整文件名。
内容的提问来源于stack exchange,提问作者DeGun999
相关产品推荐
相关产品推荐

