基于CSV创建目录结构并批量复制重命名单个.aspx文件
PowerShell 实现方案
核心思路
直接定义目标路径列表,遍历每个路径时自动创建缺失的目录,再将源文件复制并重命名到目标位置。
基础脚本(直接指定路径)
# 源文件路径,可改为绝对路径,例如 "C:\Docs\home.aspx" $sourceFile = "home.aspx" # 目标路径集合,可根据需求修改或扩展 $targetPaths = @( "Training/Policy_and_Admin/Admin/Admin.aspx", "Training/Policy_and_Admin/Finances/Finances.aspx", "Training/Retirement/Retirement.aspx", "Root/SysAdmin/Owner.aspx" ) # 批量处理每个目标路径 foreach ($targetPath in $targetPaths) { # 提取目标目录部分 $targetDir = Split-Path -Path $targetPath -Parent # 自动创建目录(不存在时) if (-not (Test-Path -Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir -Force | Out-Null } # 复制并覆盖文件 Copy-Item -Path $sourceFile -Destination $targetPath -Force } Write-Host "所有文件复制完成"
扩展:从Excel表格读取路径
如果目标路径保存在Excel表格(比如第一列存放完整路径),可借助ImportExcel模块读取数据(先运行Install-Module -Name ImportExcel安装模块):
$sourceFile = "home.aspx" # 读取Excel中的路径,替换为你的文件路径和工作表名、列名 $targetPaths = Import-Excel -Path "C:\PathList.xlsx" -WorksheetName "Sheet1" | Select-Object -ExpandProperty 路径列名 foreach ($targetPath in $targetPaths) { $targetDir = Split-Path -Path $targetPath -Parent if (-not (Test-Path -Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir -Force | Out-Null } Copy-Item -Path $sourceFile -Destination $targetPath -Force } Write-Host "所有文件复制完成"
Excel VBA 备选方案
打开Excel按Alt+F11进入VBA编辑器,插入模块后粘贴以下代码:
基础版本(直接指定路径)
Sub CopyHomeAspx() Dim sourcePath As String Dim targetPaths As Variant Dim i As Integer Dim targetPath As String Dim targetDir As String ' 替换为你的源文件绝对路径 sourcePath = "C:\YourFolder\home.aspx" targetPaths = Array( _ "Training/Policy_and_Admin/Admin/Admin.aspx", _ "Training/Policy_and_Admin/Finances/Finances.aspx", _ "Training/Retirement/Retirement.aspx", _ "Root/SysAdmin/Owner.aspx" _ ) For i = LBound(targetPaths) To UBound(targetPaths) ' 转换为Windows路径格式 targetPath = Replace(targetPaths(i), "/", "\") ' 提取目标目录 targetDir = Left(targetPath, InStrRev(targetPath, "\")) ' 创建目录(不存在时) If Dir(targetDir, vbDirectory) = "" Then MkDir targetDir End If ' 复制文件 FileCopy sourcePath, targetPath Next i MsgBox "文件复制完成" End Sub
从Excel表格读取路径
如果路径存放在当前工作表A列(从A1开始):
Sub CopyHomeAspxFromSheet() Dim sourcePath As String Dim ws As Worksheet Dim lastRow As Integer Dim i As Integer Dim targetPath As String Dim targetDir As String sourcePath = "C:\YourFolder\home.aspx" Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = 1 To lastRow targetPath = Replace(ws.Cells(i, "A").Value, "/", "\") targetDir = Left(targetPath, InStrRev(targetPath, "\")) If Dir(targetDir, vbDirectory) = "" Then MkDir targetDir End If FileCopy sourcePath, targetPath Next i MsgBox "文件复制完成" End Sub
内容的提问来源于stack exchange,提问作者Darkstar.Industries
相关产品推荐
相关产品推荐

