Pętla wsadowa przez całą zawartość określonego katalogu i przenieś te podkatalogi i / lub pliki oprócz niektórych plików i folderów do innej lokalizacji

0

Mam katalog źródłowy w ścieżce, D:\somepathktóry zawiera mieszaną zawartość, tj. Pliki i foldery zarówno.

Teraz chcę przenieść wszystkie foldery i pliki z wyjątkiem kilku plików i folderów z tej ścieżki źródłowej na inną ścieżkę docelową, powiedzmy D:\otherpath.

Ale nie mogę wymyślić, jak przejść przez całą mieszaną zawartość w katalogu źródłowym za pomocą jednej forpętli.

Poniżej znajduje się kod, który próbowałem, drukuje tylko foldery, a nie pliki, ale chcę też pliki:

@ECHO OFF
FOR /f %%f in ('dir /ad /b "D:\somepath\"') DO ECHO %%f
PAUSE > NUL
Vicky Dev
źródło

Odpowiedzi:

1

JEŻELI rozwiązanie PowerShell jest w porządku i masz PowerShell 3.0+, możesz użyć tego:

$except = @(
    "Thisfile.png",
    "ThisFolder",
    "ThisOtherFile.exe"
)

$source = "D:\somepath"
$destination = "D:\otherpath"

gci $source | % {
    if (!( $_.Name -in $except)) { 
        Move-Item $_.FullName $destination -Force 
        if ($?) { Write-Host "$($_.Name) was moved." }
    }
    else {  
        Write-Host "$($_.Name) was not moved." -fore Red
    }
}

po prostu dodaj nazwy plików, których nie chcesz przetwarzać $except = @()

SimonS
źródło