Следующий скрипт должен проверять, изменилось ли количество файлов и папок с момента последнего запуска пакетного файла. Если это так, он печатает сообщение и обновляет счет.
К сожалению, это не совсем работает. Я думаю, что у меня есть проблема с утверждениями if
в моих сравнениях строк.
Кто-нибудь знает, как мне заставить скрипт работать?
@echo off
::Check number of dir's and files in last run
set /p filecounta=<"countfile.log"
set /p dircounta=<"countdir.log"
::Check number number of dir's and files currently
for /f %%A in ('dir /a-d-s-h /b ^| find /v /c ""') do set filecountb=%%A
for /d %%G in (*) do set /a dircountb=dircountb+1
::Compares the number of counts in the past with the present
if not "%filecountb%"=="%filecounta%" goto :news
if not "%dircountb%"=="%dircounta%" goto :news
CALL :save
echo no news
pause
exit
:news
CALL :save
echo news
pause
exit
:: Subs
:: Put number of dir and files in log file
:save
echo %filecountb% >"countfile.log"
echo %dircountb% >"countdir.log"
GOTO:EOF
Редактировать:
После предложения @ Rik я попытался удалить пробел перед >
в
echo %filecountb%>"countfile.log"
и echo %dircountb%>"countdir.log"
но это не сработало в моей ОС. Решением было добавить TRIM
функцию для удаления пробелов после чтения их из лог-файлов.
::Check number of dir's and files in last run
set /p filecounta=<"countfile.log"
set /p dircounta=<"countdir.log"
CALL :TRIM %filecounta% filecounta
CALL :TRIM %dircounta% dircounta
.
.
.
:TRIM
SET %2=%1
GOTO :EOF