題 我怎樣才能移動,而不是複制具有相同擴展名的所有文件?


如何移動,不將所有具有相同擴展名的文件從數百個子目錄複製到單個文件夾中而不覆蓋相同的名稱文件?


7
2018-06-20 11:32


起源


歡迎來到超級用戶。請告訴我們你到目前為止所嘗試的內容。 - CharlieRB


答案:


在DOS中做:

FOR /R "C:\MoveFromDirectory" "%i" IN (*.mp3) DO MOVE "%i" "C:\Move2Directory"

將“MoveFromDirectory”更改為您要搜索的目錄。將* .mp3更改為您需要的任何文件擴展名。更改Move2Directory執行您要將其移動到的位置。


7
2018-06-20 11:55



我不知道同名文件怎麼不會被覆蓋,你能解釋一下嗎? - MDMoore313
默認情況下,MOVE命令在從命令行運行時不會在沒有提示的情況下覆蓋文件。如果您在批處理文件中使用它,則需要添加 /-Y 之後 DO MOVE。它會提示您是否要覆蓋。 - Travis


使用Powershell非常容易。此腳本獲取擴展名為.txt的所有文件(來自當前目錄)並對每個文件進行操作:如果目標文件名存在,則將當前時間戳(以毫秒為單位)附加到目標文件名。

$DestPath = "C:\NewFolder"


Get-ChildItem .\*.txt -recurse | foreach{

    if(Test-Path "$DestPath\$($_.Name)" -eq true)
    {
        Copy-Item $_ -Destination "$DestPath\$($_.BaseName)-$($(get-date).ToString("yyyyMMddhhmmssss"))$($_.Extension)"
    }

    else
    {
        Copy-Item $_ -Destination $DestPath
    }
}

5
2018-06-20 12:25



另外,如果你 真 想要移動,使用 move-item cmdlet而不是 copy-item。 - MDMoore313


通過在Windows資源管理器窗口的右上角搜索欄中輸入類似* .exe的內容,搜索具有給定擴展名的所有文件。這將搜索當前目錄中的所有.exe文件以及子目錄。此時,所有這些文件都將列在窗口中。您現在可以選擇它們,並使用剪切/粘貼,重命名它們或您可以在Windows資源管理器中正常執行的任何其他操作。


3
2018-06-20 11:44



但是你可以編輯你的問題,這比答案更可取。 - Patrick B.
這不是他的問題帕特里克。 - Travis
事實上,這是最簡單的方法;如果你只需要做一次。 - zeel
我相信這只適用於Win7 +。 - Travis