批量循环遍历特定目录的所有内容,并将除某些文件和文件夹之外的子目录和/或文件移动到其他位置

批量循环遍历特定目录的所有内容,并将除某些文件和文件夹之外的子目录和/或文件移动到其他位置

我在路径上有一个源目录D:\somepath,其中包含混合内容,即文件和文件夹。

现在我想将除少数文件和文件夹之外的所有文件夹和文件从源路径移动到另一个目标路径D:\otherpath

但我不知道如何用一次for循环来循环遍历源目录中的所有混合内容。

下面是我尝试过的代码,它只打印文件夹而不打印文件,但我也想要文件:

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

答案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 = @()

相关内容