Windows 7-フォルダー内にあるすべてのファイルを検索する


10

フォルダ内に単独であるすべてのファイルを選択する方法を見つける必要があるので、他の場所にそれらをカットアンドペーストできます。それぞれのフォルダはすべて1つのメインルートフォルダ内にあります。コマンドプロンプト、またはこれのための総司令官のトリックはありますか?


サブディレクトリで何をしたいですか?1つ以上のサブディレクトリも含むディレクトリ内の単一のファイルにフラグを付けますか?または、親に他のファイルがない単一のサブディレクトリですか?
AFH 2016

回答:


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%"
        )
    )
)

このバッチはC:\TEST 1、サブフォルダ内のカウントファイルを調べます。孤独なファイルを見つけると、に移動しC:\TEST 2ます。また、ファイル名が既に存在する場合は上書きを要求します。

C:\TEST 1およびC:\TEST 2を独自の値に置き換えます。

pauseバッチの最後に追加して、エコーされたファイル数を読み取ることができます。


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

これはPowershellで機能し、srcとtargetを置き換えます。同じファイル名の場合、上書きされません。Move-Itemに力を加えて、それを実現できます。

これはおそらく凝縮されるかもしれません、私はpowershellの初心者です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.