首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子文件夹复制文件并重命名

问从子文件夹复制文件并重命名
EN

Stack Overflow用户
提问于 2018-12-06 23:34:51
回答 4查看 1.2K关注 0票数 2

我需要帮助完成一项任务

我需要复制一个导出的文件从子目录到一个新的文件夹位置,并让他们重命名。问题是所有导出的文件都有相同的名称,并且高达500个。

代码语言:javascript
复制
--Old Folder
 ---Export1
    ---Scan.TIF
 ---Export2
    ---Scan.TIF
 ---Export3
    ---Scan.TIF

我尝试了下面的链接,这是很好的,但数据会到处都是。例如,在新文件夹位置中复制和重命名的文件名为例如SCAN13.TIF实际上是来自子目录Export24的文档

https://sumtips.com/snippets/powershell/copy-files-rename-duplicates-subfolder/

我需要一个脚本的帮助,该脚本可以将文件从所有子目录复制到一个新位置,重命名并匹配数据。

这是可以通过脚本完成的,还是会有这样的工具呢?

耽误您时间,实在对不起

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-12-07 03:39:32

此脚本使用正则表达式获取scan.tif文件目录名的尾随号。

-match操作符将RegEx捕获组()存储在$Matches集合中,该集合用于使用-f(ormat)运算符构建目标名称。

代码语言:javascript
复制
## Q:\Test\2018\12\07\SO_53661264.ps1
$Src = "A:\Old Folder"
$Dst = "A:\New Folder"

Set-Location $Src
Get-ChildItem Scan.tif -Recurse -File |
  Where {$_.Directory.Name -match 'Export(\d+)$'} |
    Copy-Item -Destination {Join-Path $Dst ("Scan{0}.TIF" -f $Matches[1])} -WhatIf

如果输出看起来没有问题,请删除/注释掉尾随的-WhatIf参数。

运行脚本后,我的ramdisk的示例tree /f:

代码语言:javascript
复制
> tree /F \
Auflistung der Ordnerpfade für Volume RamDisk
├───New Folder
│       Scan1.TIF
│       Scan2.TIF
│       Scan3.TIF
│
└───Old Folder
    ├───Export1
    │       Scan.TIF
    │
    ├───Export2
    │       Scan.TIF
    │
    └───Export3
            Scan.TIF
票数 1
EN

Stack Overflow用户

发布于 2018-12-07 00:43:26

如果我对你的理解是正确的,那么以下几点应该是可行的:

代码语言:javascript
复制
$source = "C:\test"
$Destination = "C:\Users\user\Documents\Tests"

$i = 1

foreach ($file in (Get-ChildItem -Recurse $source -Filter *.TIF)) {
    Copy-Item $file.FullName -Destination "$destination\Scan$i.TIF"
    $i++
}

您需要更改$source和$destination变量。源是要从其中复制的文件夹的根目录。

最终结果将是源目录下的任何.TIF文件被复制到具有文件名Scan[$i].TIF的目标文件夹中,在该文件夹中,复制的每个文件的数量将迭代1。

票数 0
EN

Stack Overflow用户

发布于 2019-05-31 18:50:39

你可以先试试这个

将文件夹的名称放在文件名的开头。

代码语言:javascript
复制
Get-ChildItem <Directory of File> -Filter *.ext -Recurse | Rename-Item -NewName {$_.Directory.Name+'_'+$_.Name}

这并不是你想要的全部答案,而是你所需要的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53661264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档