Mam katalog zawierający ponad 400 podfolderów. W każdym z tych podfolderów codziennie pojawia się nowy plik. Każdy nowy plik ma taką samą nazwę jak plik, który pojawił się wczoraj w tym samym folderze. Każdy folder zawiera pliki o innych nazwach niż w innym folderze, ale nowe pliki w tym samym folderze zawsze mają tę samą nazwę. Nie chcę, aby pliki były nadpisywane codziennie. Zamiast tego chciałbym, aby Powershell dodał dzisiejszą datę po nazwie pliku i przed rozszerzeniem. Wiem, jak to zrobić dla pojedynczego podfolderu, ale nie chcę tworzyć ponad 400 skryptów (po jednym dla każdego podfolderu).
Jest to skrypt, który doskonale wykonuje zadanie dla każdego pojedynczego folderu .
$fileToRename = "E:\Backup\ABLBackup\folder1\Project1.txt"
if (Test-Path $fileToRename)
{
$fileName = [system.io.path]::GetFileNameWithoutExtension($fileToRename)
$dateSuffix = get-date -Format 'yyyy_MM_dd'
$fileExtension = [system.io.path]::GetExtension($fileToRename)
$newFileName = '{0}_{1}{2}' -f $fileName, $dateSuffix, $fileExtension
Rename-Item -Path $fileToRename -NewName $newFileName
}
Chciałbym wiedzieć, jak zmodyfikować powyższy skrypt, aby wszystkie ponad 400 podfolderów mogły być zawarte w jednym skrypcie. Wiem, że mogę powtórzyć to samo polecenie ponad 400 razy i zapisać je jako jeden skrypt, ale nie jest to możliwe, ponieważ użytkownicy dodają nowe foldery bez informowania mnie. Z pewnością musi istnieć jakiś automatyczny sposób na uzyskanie wszystkich nowych plików, które pojawiły się w podfolderach.
Struktura folderów wygląda następująco:
E: \ Backup \ ABLBackup \ folder1 \ Project1.txt
E: \ Backup \ ABLBackup \ folder2 \ Project2.txt
E: \ Backup \ ABLBackup \ folder3 \ Project3.txt
E: \ Backup \ ABLBackup \ folder4 \ Project4.txt
Każda pomoc będzie mile widziana!
$newitem -is [array]
i obsługiwać inną pętlę Foreach.