Необходимо скопировать один файл во все подпапки рекурсивно - PullRequest
0 голосов
/ 13 октября 2019

Пожалуйста, кто-нибудь может помочь мне создать скрипт powershell или CMD, как можно более простой (1 строка?), Который будет выполнять следующее ...

-Take file (c: \ test.txt) -Копировать во ВСЕ подпапки в данной папке, включая несколько уровней, например, c: \ test1 \ 1 \ 2 \ 3 \ и c: \ test2 \ 6 \ 7 \ 8 \ -Без перезаписи этого файла, если он уже существует -Не изменятьЛЮБЫЕ существующие файлы. Просто добавив исходный текстовый файл, если он не существует.

Я перепробовал несколько скриптов, которые нашел в сети, менял их, но безуспешно. Либо он перезаписывает существующие файлы, либо не углубляется на несколько уровней, либо пропускает все папки между верхним / нижним уровнями, либо выдает ошибки. Я сдаюсь.

Спасибо, Мэтт

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Как на счет этого ...

$folders = Get-ChildItem -Recurse -Path C:\temp\1 -Directory
$file = "c:\temp\test.txt"

foreach($folder in $folders){
    $checkFile = $folder.FullName + "\test.txt"
    $testForFile=Test-Path -Path $checkFile
    if(!$testForFile){
        Copy-Item $file -Destination $folder.FullName
    }  
}
0 голосов
/ 13 октября 2019

Не одна строка, но здесь вы идете:

$rootFolder = 'PATH OF FOLDER CONTAINING ALL THE SUBFOLDERS'
$fileToCopy = 'c:\test.txt'
$fileName   = [System.IO.Path]::GetFileName($fileToCopy)
Get-ChildItem -Path $rootFolder -Recurse -Directory | ForEach-Object {
    if (!(Test-Path -Path (Join-Path -Path $_.FullName -ChildPath $fileName) -PathType Leaf)) {
        Copy-Item -Path $fileToCopy -Destination $_.FullName
    }
}
...