我在多个目录中有多个具有相同文件名的不同文件;
Folder1/file1.tif
Folder2/file1.tif
Folder3/file1.tif
我希望将所有同名文件复制/移动到一个目录中,并将目录名添加到文件名前面(Folder1_file1.tif
,Folder2_file1.tif
...)。
如何在命令提示符/批处理中执行复制/重命名/移动操作?
答案1
powershell $d='C:\NewFolder\';md $d;ls -r -fo -fi "*.tif"^|%{(cp -Path ($_.FullName) -Dest ($d+$_.Directory.Name+'_'+$_.Name))}
- md $d — 创建目录 'C:\NewFolder\'
- ls -r - 获取所有子目录和当前目录中的所有文件
- fo = -force - 添加到隐藏、系统和只读属性文件列表
- -fi = -filter "*.tif" - 选择文件 tif 类型
- ^| -
^
- 掩码传输器/管道符号cmd
,|
-ls
将对象管道化为copy
命令 %
~foreach
~ForEach-Object
- 所有项目循环cp
=copy
=Copy-Item
- 复制对象于powershell
$_
- 管道中当前对象的变量;示例:powershell 'a','B','c','d','F' ^|%{if($_.toLower() -gt 'b'){write $_}}
- -Path-源在
cp
//copy
命令Copy-Item
中 - -Dest = -目的地
$_.FullName
- 完整路径名 - 源文件$_.Directory.Name
- 仅限父目录名称$_.Name
- 仅限文件名($d+$_.Directory.Name+'_'+$_.Name)
- 目标路径和文件名