循环浏览文件夹并复制特定文件的脚本

循环浏览文件夹并复制特定文件的脚本

我需要一个脚本来循环浏览文件夹并复制文件夹名称并将其保存在“temp”中。然后在该文件夹中复制一个特定文件并将其粘贴到另一个名为“temp.dat”的文件夹中

例如,取“drivers.dat”文件夹名,提取“drivers”,然后复制'drivers.dat'\'dat'文件,移动并重命名为new_dat\drivers.dat

谢谢您的帮助。


假设路径是网络路径 L:\Personal Folders。在这里 1) 创建一个“new_dat”文件夹 2) 循环浏览目录中的文件夹并:a. 获取文件夹名称,提取不带 .dat 扩展名的文件夹名称,保存名称 b. 在该文件夹中复制并将 dat 文件重命名为 name_dat.dat c. 将新的 dat 文件复制到“new_dat”文件夹。3) 对每个 folder.dat 重复此操作

例如,取“2.5V drivers.dat”文件夹名,提取“2.5V drivers”然后复制'2.5V drivers.dat'\'dat'文件,移动并重命名为new_dat\2.5 V drivers.dat

我们最终会得到一个包含所有“dat”文件的 new_dat 文件夹,但将其重命名为“文件夹名称.dat”。

答案1

这是用 PowerShell 3 编写的。

#Set Location to Folder
Set-Location -Path "C:\Personal Folders"

#Check If The Folder "new_dat" exists, if it doesnt, create it
if(!(Test-Path -Path "new_dat"))
{
    New-Item -Name "new_dat" -ItemType Directory
}

#Get All The Folders Except "new_dat"
$Folders = Get-ChildItem -Directory | Where-Object {$_.Name -ne "new_dat"}

#This Is Where The Magic Happens
foreach($Folder in $Folders)
{
    Get-ChildItem -Path $Folder.FullName -Filter *.dat | Move-Item -Destination  (Join-Path -ChildPath ([System.IO.Path]::GetFileNameWithoutExtension($Folder.Name) + "_dat.dat") -Path "C:\Personal Folders\new_dat" )
}
  • 安装 PowerShell 3
  • 将其放入文本文件并将其命名为 Move.ps1
  • 设置计划任务,使其每隔 X 小时或其他时间运行一次

相关内容