我有一个脚本会复制我已经过滤并复制到名称加上LastWriteTime的新目录的目录列表
$srcdir = "Z:\Production500\000600"
$destdir = "X:\Standards\Water Resources\GIS\_Water Resources GIS Database\_Unprocessed_Raw_data"
$folders = Get-ChildItem -Recurse "Z:\Production500\000600" -Filter "Water Resources","GIS" -Recurse
$i=1
$folders | % ($_) {cp $_.FullName -Destination "$destdir\$($_.Name + $_.LastWriteTime.toString("_yyyy_MM_dd_") + $i)" -recurse; $i++}
该脚本可以很好地将我需要的确切文件夹和文件复制为以下格式:
.\GIS_2017_07_09_1
.\GIS_2017_07_10_2
.\GIS_2017_07_10_3
而不是计数器,我更喜欢在其中一个父目录的末尾有一个名字。例如,如果$ folders是此列表:
Directory: Z:\Production500\000600\B000676\Design\004\Chisholm Park\Water Resources
Directory: Z:\Production500\000600\B000667\Design\001\Water Resources
Directory: Z:\Production500\000600\B000663\Design\001\Water Resources
我希望将复制的项目重命名为:
.\GIS_2017_07_09_B000676
.\GIS_2017_07_10_B000667
.\GIS_2017_07_10_B000663
因此,不需要柜台,也使目的地更有条理。值得注意的是,B000 ###始终是第3个文件夹。
答案 0 :(得分:0)
让我们假设你的路径是在一个变量中提到的,你可以继续这个,因为你已经提到它将永远是第三级文件夹:
您可以使用spilled获取文件夹名称,并将其放在foreach
中$path="Z:\Production500\000600\B000676\Design\004\Chisholm Park\Water Resources"
$srcdir = "Z:\Production500\000600"
$destdir = "X:\Standards\Water Resources\GIS\_Water Resources GIS Database\_Unprocessed_Raw_data"
$folders = Get-ChildItem "Z:\Production500\000600" -Filter "Water Resources","GIS" -Recurse
$folders | % ($_) {cp $_.FullName -Destination "$destdir\$($_.Name + $_.LastWriteTime.toString("_yyyy_MM_dd_") + "$($path.split('\')[3])")" -recurse}
您不需要 $ i 变量,也不需要进行增量操作。
确保正确地提供路径,以便它可以在每条路径上分割。这只是对路径进行硬编码的示例,因为您尚未指定它是在目标路径还是源路径中。
希望它有所帮助。