Windows 7 - 查找文件夹中单独存在的所有文件

Spa*_*oit 10 windows-7 file-search find

我需要找到一种方法来选择文件夹中单独存在的所有文件,以便我可以将它们剪切并粘贴到其他地方。所有相应的文件夹都在一个主根文件夹中。是否有命令提示符或总指挥官技巧?

小智 6

$src = "G:\temp"
$target = "G:\notalone"

if (Test-Path $src)
{
    $folders = Get-ChildItem $src -Recurse | ?{ $_.PSIsContainer }
    foreach($folder in $folders)
    {
        $fc = Get-ChildItem $folder.FullName | ?{!$_.PSIsContainer} | Measure-Object | Select-Object -Expand Count
        if ($fc -eq 1)
        {
            $file = Get-ChildItem $folder.FullName | ?{!$_.PSIsContainer} | Select-Object
            Write-Host "Moving " $file.FullName " to " $target
            Move-Item $file.FullName $target
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该在 Powershell 中工作,替换 src 和 target。如果你有相同的文件名,它不会覆盖。您可以向 Move-Item 添加力来实现这一点。

这可能是浓缩的,我是 powershell 的新手。


Mah*_*ouh 5

@echo off
Setlocal EnableDelayedExpansion

SET ROOT_FOLDER=C:\TEST 1
SET TARGET_FOLDER=C:\TEST 2

FOR /D %%G IN ("%ROOT_FOLDER%"\*) do (
CD %%G
    FOR /f %%A in ('dir ^| find "File(s)"') do (
        set cnt=%%A
        Echo %%G  : !cnt!
        IF !cnt! == 1 (
            move /-y "*.*" "%TARGET_FOLDER%"
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

该批次将在C:\TEST 1子文件夹中查看计数文件。一旦它找到一个孤独的文件,它就会将它移动到C:\TEST 2. 如果文件名已经存在,它也会要求覆盖。

用你自己的价值观替换C:\TEST 1C:\TEST 2

您可以pause在批处理末尾添加以读取由它回显的文件计数。