检查文件大小是否随Windows批处理而变化

时间:2014-02-28 12:22:07

标签: batch-file

我有点问题,我正在努力理清。我正在全天候录制声音,并将它们拆分为持续2小时的.wav文件。由于.wav文件非常大,我想将它们编码为.mp3。这个脚本

一切正常
@echo off
cd path/to/folder

for %%i in (*.wav) do (
   lame.exe %%i
   del %%i
)

一切正常,但有一个问题,我想检查文件是否还在录制,如果那是真的那么我不想编码它。我现在尝试检查文件大小,10秒后检查文件大小,但它获得相同的值。这是示例

@echo off
cd path/to/folder

for %%i in (*.wav) do (
    echo %%~zi
    ping -n 10 127.0.0.1 >nul
    echo %%~zi
)

输出例如:

444444

和10秒后相同

444444

如果文件大小不断变化,有人可以告诉我如何查看文件大小吗?

1 个答案:

答案 0 :(得分:1)

在您的文件上测试此内容。

它将获得一个文件名(在NTFS中按字母顺序排序)并测试它是否被锁定,如果是,则循环 - 每60秒测试一次。

当文件空闲时,它将启动lame,然后检查下一个文件。

@echo off
cd /d "path/to/folder"

for %%a in (*.wav) do call :next "%%a"
echo done
pause
goto :eof

:next
set "filename=%~1"
:loop
2>nul (call;>>"%filename%") && (
  echo "%filename%" is free! & goto :lame
) || (
  echo "%filename%" is in use or is read only!
)
timeout /t 60 /nobreak
goto :loop
:lame
  lame.exe "%~1"
  del "%~1"