Меня попросили посмотреть, могу ли я скопировать много файлов из источника, в котором есть каталоги и подкаталоги, и чтобы taget был одним каталогом. Все файлы в один каталог. Если будет дублированный файл, они просто скопируют его с другим именем, например ... (1). Я попытался выполнить ROBOCOPY, но пока не нашел переключателя, который помог бы мне с этой задачей.
Спасибо!
Это легко сделать с помощью PowerShell.
# Set the source and destination paths (No trailing slash)
$source = "C:\subtree"
$dest = "C:\consolidated"
# Get a list of all files recursively
$files = Get-ChildItem -Path $source -Recurse
# Process each file
$files | ForEach-Object {
# Basename is filename w/o ext
$baseName = $_.BaseName
$ext = $_.Extension
# Build initial new file path
$newName = "$dest\$($_.Name)"
# Check for duplicate file
If (Test-Path $newName) {
$i = 0
# While the file exists, increment the number that will be appended
While (Test-Path $newName) {
$i++
$newName = "$dest\$baseName($i)$ext"
}
}
# If the file is not a duplicate, write the (placeholder) file.
Else {
New-Item -ItemType File -Path $newName -Force
}
# Copy the file contents to the destination
Copy-Item $_.FullName -Destination $newName -Force
}
Поскольку вы новичок в Powershell, я предлагаю использовать Powershell ISE, которая входит в комплект. Это позволит вам вставить этот скрипт и легче работать с ним.