📂
ダウンロードしたファイルを現在のフォルダーに移動させるコマンド
ダウンロードしたファイルをいどうさせるのがめんどうくさくなりました。
ということでコマンドを作りました。昨日作りました。
コマンド
またまたまたまたまたまたコマンドを更新しました!
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'を別のパスに入れ替えることで別のフォルダーから移動するようにできます。
普通に便利です。
参考文献
Discussion