Почему мой случай сравнения IF не работает?

update SOLVED – проблема не в моем коде. существует ограничение по designу (некоторые могут сказать «ошибка») в командном processоре. операторы сравнения IF не работают со значениями выше 2147483648. протестированы и реплицированы в Windows 2000, XP и Server 2003.

теперь мне просто нужно выяснить, как снять некоторые из наименее значимых цифр для обходного пути. спасибо всем за чтение.

=========

приветствовать там в киберпространстве,

Я управляю networkingю небольшой компании. Я пытаюсь настроить автоматизированный process архивирования, используя batch file, работающий на serverе, и ему нужна небольшая помощь в логике. Я не программист и не имею времени изучать PowerShell или VBscript. Я прочитал и перечитал ссылку на команду MS на IF, FOR и CALL и не могу понять, что я делаю неправильно.

У нас есть Windows 2000 Server с двумя дисками и ленточным накопителем. На одном диске есть общая папка, назовите ее Public; другой диск не является общим, назовите его Staging.

Общий диск будет принимать inputящие резервные копии с клиентских компьютеров. Мне нужен process перемещения fileов из общего диска на накопительный диск до тех пор, пока диск не будет слишком полным, чтобы принимать больше fileов, после чего начlessся резервное копирование ленты. По завершении ленточного запуска Staging-диск будет опустошен, и process возобновит перемещение fileов из Public в Staging.

objective состоит в том, чтобы автоматически и постоянно архивировать fileы резервных копий рабочего стола на ленту без вмешательства пользователя, кроме изменения ленты.

Вы можете спросить, зачем задействовать два диска? Две причины:

1) Если рабочие столы поддерживают резервное копирование непосредственно на накопительный накопитель, в какой-то момент резервные копии клиентских компьютеров будут сбой из-за нехватки места на целевом диске. Я не могу предсказать, когда это произойдет; единственным определяемым условием, о котором я могу думать, будет произвольный порог свободного дискового пространства, но поскольку fileы резервных копий, которые будут архивироваться, будут разных размеров, я мог бы столкнуться с ситуацией, когда свободное пространство целевого диска выше порога, но следующая резервная copy превышает это пространство. Результат: резервное копирование клиентского рабочего стола завершается неудачей, и резервное копирование на ленту на serverе не запускается.

2) Если накопительный накопитель заполняется и по какой-либо причине происходит сбой резервного копирования на магнитной ленте (независимо от того, какая лента не изменилась или что-то еще), резервное копирование рабочих столов на общий диск покупает мне некоторое time, чтобы исправить проблему с лентой до того, как резервные копии рабочего стола начнут сбой.

Вот algorithm, который я пытаюсь закодировать:

1) Начать

2) Получите свободное пространство на промежуточном диске

3) Получите размер самого маленького fileа на общедоступном диске (если fileов less, выйдите)

4) Сравните размер fileа с свободным пространством на промежуточном диске

5) если file поместится, переместите его на Staging drive; else, выход и запуск резервного копирования ленты

6) вернуться в начало

И вот мой пакетный код, который не работает. На этом этапе тестирования у меня есть один file (8 ГБ) в общедоступном диске, который поместится в свободное пространство (32 ГБ) на промежуточном диске. Команда set подтверждает, что variables устанавливаются как ожидалось; process терпит неудачу в заявлении [if% BKFsize% LSS% DiskFree% "]. Вместо перемещаемого fileа вместо этого вызывается ленточная подпрограмма, указанная 'else':

@echo off setlocal enableextensions enabledelayedexpansion :Begin REM obtain and display free space on Staging drive. D: for /f "tokens=3 delims= " %%A in ('dir ^| find "bytes free"') do ( set Z=%%A set Z=!Z:,=! ) set DiskFree=!Z! echo. echo D: has %DiskFree% bytes free echo. REM obtain sizes of files on Public drive to be moved. E: cd \backup.email if not exist *.bkf exit dir *.bkf /b /os > BKFlist.txt for /f "tokens=*" %%G in (BKFlist.txt) do call :CheckBKF "%%G" goto :eof :CheckBKF set BKFfile=%1 set BKFsize=%~z1 echo. echo File %BKFfile% is %BKFsize% bytes echo. set pause REM move file(s) to Staging drive, space permitting; or, REM if not enough space for smallest file, start tape backup. if %BKFsize% LSS %DiskFree% ( echo Moving file %BKFfile% to drive D echo. move E:\backup.email\%BKFfile% D:\backup.email ) else ( C:\WINNT\AutoBackup\TapeBKF.cmd exit ) goto Begin :End 

Я знаю, что это должно быть довольно просто, но, как я уже сказал, я не программист, и я склоняюсь перед вашим превосходным мастерством. Любые советы очень ценятся, и спасибо.

  • Redhat 6.4 настроен для регистрации марсианских пакетов, но не регистрирует header ll
  • Как создать неограниченный пароль и пользователя через сетевого пользователя через .bat-file
  • При анализе пакетов с Wireshark существует ли способ узнать, какая программа отправляет этот пакет?
  • Мост Linux (brctl) отбрасывает пакеты
  • Максимальный размер сегмента UDP
  • Active Directory, создайте пользователя только для добавления компьютеров в домен
  • Предварительная подготовка административной задачи с учетной записью службы через партию
  • Проверьте свободное место на диске с помощью командных команд
  • SQL, pl / sql, sqlplus: как вернуть переменную в batch file DOS?
  • Как развернуть Vista SP2 с носителями Vista SP1?
  • Чрезвычайно слабоватое подkeyение к нашему экземпляру EC2 через одно connection, но не другие
  • Interesting Posts

    Как разместить кластерный диск в режиме обслуживания в Windows Server 2012 R2?

    Как обновить Redmine на Windows (Helicon Zoo)

    ssh и git pull с удаленного serverа

    lighttpd: настроить mod_auth для websiteа на настраиваемом порту

    Маршрутизация FreeBSD (pfSense) – Не удается find маршрут по умолчанию

    медленное смягчение пост-атаки прерывает медленные загрузки fileов

    Ошибка: php70w-общие конфликты с php-common-5.4 при установке phpmyadmin в centos 7

    Как развертывать приложение в VMWare?

    как разрешить пользователю изменять сетевые настройки без прав администратора, изменить режим хост-сети, runas

    Как Сообщать поставщику программного обеспечения, что они не знают, о чем они говорят

    установить oracle java с помощью альтернативной системы на centos 7

    Неужели невозможно добавить данные на ленту?

    Как настроить server приложений IBM Websphere для отправки уведомлений по электронной почте из синхронизации?

    Использование памяти Tomcat

    Как настроить ярлык для подключения SSH через туннель SSH