Lote o loop por todo o conteúdo de um diretório específico e mova os subdiretórios e / ou arquivos, exceto alguns arquivos e pastas, para outro local

0

Eu tenho um diretório de origem no caminho D:\somepath que contém conteúdo misto, ou seja, arquivos e pastas.

Agora, quero mover todas as pastas e arquivos, exceto que alguns arquivos e pastas desse caminho de origem para outro caminho de destino digam D:\otherpath .

Mas não consigo descobrir como percorrer todo o conteúdo misto no diretório de origem com um for loop.

Abaixo está o código que eu tentei, ele imprime apenas pastas e não arquivos, mas eu também quero arquivos:

@ECHO OFF
FOR /f %%f in ('dir /ad /b "D:\somepath\"') DO ECHO %%f
PAUSE > NUL
    
por Vicky Dev 13.11.2017 / 10:08

1 resposta

1

SE uma solução do PowerShell estiver correta e você tiver o PowerShell 3.0+, poderá usá-la:

$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
    }
}

adicione o FileNames que você não deseja processar dentro de $except = @()

    
por 13.11.2017 / 14:14