2011-07-20 18 views
2

ディレクトリ内の特定のサイズより小さいファイルをすべて削除したいとします。これを行うWindowsコマンドがあれば誰にも知られていますか?特定のサイズより小さいファイルを削除する

for /F %%A in ("*.pdf") do If %%~zA LSS 20103409 del %%~fA 

をし、私が得る出力に含まは次のとおりです:del *.* where size<3kb

のようなものは、私は現在、これをやっている

C:\Documents and Settings\agordon\Desktop\test>If 6440450 LSS 20103409 del C:\Do 
cuments and Settings\agordon\Desktop\test\US Tox 01-06-11.pdf 
The system cannot find the path specified. 

を...そのPDFファイルが削除されるのに十分小さくても。

私は間違っていますか?

これは、実際に働いている:彼らはスペースを持っているので

FOR %%F IN (*.pdf) DO (
IF %%~zF LSS 20103409 DEL %%F 
) 

それは、ファイル名を認識していませんが!どのように私はそのスクリプトのWindows名を "DOS"名に変換するのですか?たとえば、Windowsの名前はfile name.pdfです。私はおそらく "DOS"に変換する必要があり、このようになりますfile_name.pdfまたはそのようなものです。

+0

は、私のように見えますほとんどそこにあります:)代わりに –

+0

スーパーユーザーですか? –

答えて

9

バッチスクリプトからこれを試してみてください:

@echo off 
setlocal 
for /f "usebackq delims=;" %%A in (`dir /b *.pdf`) do If %%~zA LSS 3145728 del "%%A" 
+0

これは素晴らしいです私の質問に答えるためにコードを修正してください私は本当にドスで悪いです –

+0

申し訳ありませんが、これは動作していません " –

+0

編集を見てください –

-2

私はこれをDOSから行う方法がわかりませんが、これは過去に使用したことです。 VBScriptを使用しているので、このfilesoversize.vbsを呼び出します。

Dim strPath 
Dim lngSize 

Dim fso 
Dim fold 
Dim files 
Dim file 

lngSize = 10000 ' The threshold in bytes (this is 100k) 
strPath = "C:\temp\" 'The folder you want to start in 

Set fso = CreateObject("scripting.filesystemobject") 
Set fold = fso.GetFolder(strPath) 
Set files = fold.files 

For Each file In files 
    If file.Size <= lngSize Then file.Delete True 
Next 
-3

ファイルサイズに基づいてファイルを削除しますDELコマンドでスイッチがありません。

+0

編集を見てください –

1

Okだから私は--overWriteオプションで400以上のサブフォルダにあるすべての私のMP4ムービーにアートワークを追加するためにcmdスクリプトでAtomicParsleyを使用しました。それはたまにbarfsし、orignalファイルは2k以下で残されます。私はそれらを再ダウンロードすることができるように、これらのすべての混乱したMP4ファイルを見つける方法が必要でした。

これは私がMrchiefの例を使用して、コマンドラインから使用するものであり、それは7

@for /f "usebackq delims=;" %A in (`dir /s /b *.mp4`) do @If %~zA LSS 2048 echo "%A" 

ウィンドウで魔法のように動作し、これは

D:\Movie>@for /f "usebackq delims=;" %A in (`dir /s /b *.mp4`) do @If %~zA LSS 2048 echo "%A" 
    "D:\Movie\Action\Deadland (2009)\Deadland (2009).mp4" 
    "D:\Movie\Science Fiction\Alien3 (1992)\Alien3 (1992).mp4" 

    D:\Movie> 
ファイルの32を処理した後、出力されます

エコーをdelと置き換えて、2048を変更して別のサイズを検索することができます。

0

robocopyとそのフィルタ機能を使用する別の方法があります。ここでrobocopy /?は、コマンドプロンプトウィンドウに入力されたときに示さFile Selection Optionsの抜粋です:

   /MAX:n :: MAXimum file size - exclude files bigger than n bytes. 
      /MIN:n :: MINimum file size - exclude files smaller than n bytes. 

      /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date. 
      /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date. 
      /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n. 
      /MINLAD:n :: MINimum Last Access Date - exclude files used since n. 
         (If n < 1900 then n = n days, else n = YYYYMMDD date). 

したがって/MIN/MAXオプションをここで適用することができます。ファイルをコピーしたくないので、/Lオプションを使用して、スイッチなしでコピーされるすべてのアイテムを一覧表示し、実際の削除コマンドdelを保持するfor /Fループを返します。

set "TARGETDIR=." 
set "FILES=*.pdf" 
for /F "tokens=*" %%F in (' 
    robocopy "%TARGETDIR%" "%TARGETDIR%" "%FILES%"^
     /L /IS /FP /NC /NS /NDL /NP /NJH /NJS^
     /MIN:0 /MAX:3071 
') do (
    ECHO del "%%F" 
) 

テスト後、実際にファイルを削除するには、スクリプトから大文字のECHOを削除します。 /MIN/MAX/Lのほか

は、必要に応じて出力、一致するファイルの完全なパスのつまり単純なリストの世話ほとんどがrobocopyコマンドラインで定義されたいくつかの他のオプションは、ヘッダなどの余分な情報がなく、そこにあります、フッターまたはサマリー。

ソースと宛先の両方のディレクトリがターゲットディレクトリに設定されています。通常、これはうまくいかないでしょう(ファイルを自分自身にコピーすることはできません)が、/Lが指定されているので、スイッチ/ISも指定されている場合に限りファイルリストが生成されます( "同じファイル" 。

0

はBTW:(Windowsの10で)PowerShellを使用すると、私のために簡単な方法だった:

私は、私は20メガバイト未満のファイルを削除したいディレクトリにこれをしなかった:

ls | where {$_.Length -lt 20mb} | Remove-Item 
関連する問題