0

RDX のクリーニング ユーティリティを作成したいと考えています。テープの使用可能なスペースが特定のしきい値よりも少ないかどうかをテストし、このしきい値に達するまで最も古いファイルを消去します。

私はコードのビットから何かをいじりましたが、何が悪いのかわかりません:

@echo off
@setlocal enableextensions
@setlocal enabledelayedexpansion


for /f "tokens=7" %%a in ('fsutil volume diskfree e:') do set free=%%a
for /f "delims=" %%b in ('"dir e:\*.zip /A-D /OD /B"') do set file=%%b
if %free:~0,-9% lss 61 del e:\%file% else exit

各行は別々に機能しているように見えますが、ループは機能していません。手伝ってくれませんか?

よろしくお願いします=)

4

3 に答える 3

0

これを試して:

@echo off &setlocal enableextensions

for /f "tokens=7" %%a in ('fsutil volume diskfree e:') do set "free=%%a"
for /f "delims=" %%b in ('dir e:\*.zip /A-D /O-D /B') do set "file=%%b"
if %free:~0,-9% lss 61 (del "e:\%file%") else exit
于 2013-04-03T14:32:03.853 に答える
0

ピーターのすべてのコメントに加えて、問題は2番目のFORでループしていません

読んHELP FORでから、このようなことを試してみてください...

for /f "delims=" %%b in ('"dir e:\*.zip /A-D /OD /B"') do (
  set file=%%b
  if %free:~0,-9% lss 61 del e:\%file%
)

しかし、待ってください。さらに問題があります。%free% は削除後に更新されません。比較が正しくない可能性があります。変数 %file% は、ループの反復ごとに更新されません...それらはおそらく他のSOの質問の対象です。

于 2013-04-03T17:06:24.130 に答える