You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中用通配符将多文件存入数组并批量执行命令?

修正PowerShell遍历Datafile_*.txt文件的脚本问题

我来帮你搞定这个脚本的问题~ 你的原代码没达到预期效果,主要是因为没有实际去系统中匹配文件,只是把字符串放进了数组,而且变量$Datafile也没正确赋值。下面给你几种正确的实现方式:

方法一:基础版(当前目录下匹配文件)

直接用Get-ChildItem命令获取所有符合Datafile_*.txt格式的文件,然后遍历处理:

# 获取当前目录下所有Datafile_开头的txt文件(只取文件,排除目录)
$Files = Get-ChildItem -Path "Datafile_*.txt" -File

foreach ($File in $Files) {
    # 这里写你的具体操作,比如输出文件完整路径
    Write-Host "正在处理文件: $($File.FullName)"
    # 示例:读取文件内容
    # $fileContent = Get-Content $File.FullName
    # Do something....
}

方法二:指定目标路径

如果文件不在当前工作目录,你可以指定具体路径:

# 定义文件所在的目标路径
$targetDirectory = "C:\Your\File\Path"

# 匹配目标路径下的Datafile_*.txt文件
$Files = Get-ChildItem -Path "$targetDirectory\Datafile_*.txt" -File

foreach ($File in $Files) {
    # 执行你的操作逻辑
    Write-Host "处理文件: $($File.Name)"
}

方法三:更简洁的写法

可以直接把Get-ChildItem放进foreach循环里,省去中间变量:

foreach ($File in Get-ChildItem -Path "Datafile_*.txt" -File) {
    # 你的操作代码
    Write-Host "正在处理: $($File.BaseName)"
}

原代码的问题说明

  • 你没有给$Datafile变量赋值,所以拼接后得到的是"*.txt",而不是预期的"Datafile_*.txt"
  • 就算$Datafile赋值为"Datafile_",$FileName=$Datafile + "*.txt"只是生成了一个字符串,Files=@($FileName)只是把这个字符串装进数组,并没有去系统中查找实际存在的文件,所以你的foreach循环其实是在遍历这个字符串,而不是真正的文件对象。

内容的提问来源于stack exchange,提问作者SQL_Rookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:50:32