У меня есть исходный каталог по пути D:\somepath который содержит смешанный контент, т.е. файлы и папки.

Теперь я хочу переместить все папки и файлы, кроме нескольких файлов и папок из этого исходного пути в другой целевой путь, скажем, D:\otherpath .

Но я не могу понять, как перебрать весь смешанный контент в исходном каталоге с одним for цикла.

Ниже приведен код, который я пробовал, он печатает только папки, а не файлы, но я тоже хочу файлы:

@ECHO OFF
FOR /f %%f in ('dir /ad /b "D:\somepath\"') DO ECHO %%f
PAUSE > NUL

1 ответ1

1

Если решение PowerShell в порядке и у вас есть PowerShell 3.0+, вы можете использовать это:

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

просто добавьте имена файлов, которые вы не хотите обрабатывать, внутри $except = @()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .