📂

ダウンロードしたファイルを現在のフォルダーに移動させるコマンド

2024/10/24に公開

ダウンロードしたファイルをいどうさせるのがめんどうくさくなりました。
ということでコマンドを作りました。昨日作りました。

コマンド

またまたまたまたまたまたコマンドを更新しました!

dm.bat
@echo off & setlocal
if "%1"=="dir" (dir C:\Users\%username%\Downloads /b /o:-D /P | find /v /n "" & pause & exit \b) else if "%1"=="" (set c=1) else (set c=%1)
if %c% leq 0 (set d=D & set /a c*=-1) else (set d=-D) & set i=0
for /F "delims=" %%f in ('dir C:\Users\%username%\Downloads /b /o:%d%') do (
move "C:\Users\%username%\Downloads\%%f" "%CD%" & set /a i += 1 & call :fn )
:fn
if %i% EQU %c% ( exit \b )

下のコードは以前のバージョンです。
大量のファイルを移動する際、上のコードより早いです。1000個のファイルの移動だと4秒が2秒になるため2秒早くなります(誤差では)。
その代わり!xxx!.xxxのような!!に囲まれているファイルの移動ができないバグがあります。

dm.bat
@echo off & setlocal enabledelayedexpansion
if "%1"=="" (set c=1) else (set c=%1)
if %c% leq 0 (set d=D & set /a c*=-1) else (set d=-D) & set i=0
for /F "delims=" %%f in ('dir C:\Users\%username%\Downloads /b /o:%d%') do (
move "C:\Users\%username%\Downloads\%%f" "%CD%" & set /a i += 1
if !i! EQU !c! ( exit \b )
)

バグが発見されない限り、本当にこれ以上更新はしません!
・・・冷静に考えたら、文字を打ったらdm 0と判定される状態かこれ。めんどくせぇ。

使い方

移したいフォルダー内でこのバッチファイルを使えば、更新日が新しいファイルが移動します。また、引数を入れることで回数分移動します。dm 5であれば五個移動します。
負の数を引数にすると更新日が古いファイルが移動します。dm -5であれば古いのから五個移動します。
引数に0を入れるとすべてのファイルを移動します。
また、引数にdirと入れると新しい順に番号付きでリストを表示します。

環境設定でdm.batが入っているフォルダーを指定したら、エクスプローラーのアドレスバーでこのコマンドを使えます。
また、'C:\Users%username%\Downloads'を別のパスに入れ替えることで別のフォルダーから移動するようにできます。

普通に便利です。

参考文献

https://qiita.com/plcherrim/items/67be34bab1fdf3fb87f9
https://banshoots.com/microsoft/windows_bat/filecopybat/
https://it.notepad-blog.com/programming/windowsbat/171/
https://teratail.com/questions/101335
https://qiita.com/yz2cm/items/4983be006116c369d08b

Discussion