В вашем скрипте есть несколько ошибок и недочетов, которые могут вызывать проблемы. Давайте разберем их и исправим.
### Ошибки и исправления
1. **Проверка переменных**: В вашем коде используется неправильный синтаксис для проверки переменных. Вместо `if not defined %H% and %M%` нужно использовать `if not defined H` и `if not defined M`. Также логические операторы `and` и `or` не поддерживаются в `cmd`. Вместо этого можно использовать вложенные условия.
2. **Пробелы в арифметических операциях**: В выражениях `set /a H1 = %H% * 3600` и `set /a M1 = %M% * 60` не должно быть пробелов вокруг знака `=`. Правильный синтаксис: `set /a H1=%H%*3600`.
3. **Отмена обратного отсчета**: В вашем коде не совсем корректно обрабатывается логика для отмены. Нужно убедиться, что проверка на наличие значений переменных выполняется правильно.
4. **Пробелы в `ECHO`**: В некоторых случаях, если вы хотите вывести текст, лучше использовать `ECHO` без пробелов.
### Исправленный код
Вот исправленный вариант вашего скрипта:
```batch
@ECHO OFF
ECHO SHUTDOWN SYSTEM
set /p H="HOURS: "
set /p M="MINUTES: "
REM Проверка на наличие значений
if not defined H if not defined M (
GOTO 20
)
if defined H if defined M (
GOTO 10
)
if defined H (
GOTO 10
)
if defined M (
GOTO 10
)
:10
set /a H1=%H%*3600
set /a M1=%M%*60
echo %H1%
echo %M1%
set /a TOTAL=H1+M1
ECHO %TOTAL%
SHUTDOWN -S -T %TOTAL%
pause
EXIT
:20
SHUTDOWN -A
ECHO Shutdown canceled.
pause
EXIT
```
### Объяснение изменений
- Убраны пробелы в арифметических операциях.
- Исправлены условия проверки на наличие значений переменных.
- Добавлено сообщение о том, что отключение отменено, если пользователь решит отменить.
Теперь скрипт должен работать корректно. Попробуйте его запустить и проверьте, решает ли это вашу проблему.
@ECHO OFF
ECHO SHUTDOWN SYSTEM
set /p H="HOURS: "
set /p M="MINUTES: "
REM Проверка на наличие значений
if not defined H if not defined M (
GOTO 20
)
if defined H if defined M (
GOTO 10
)
if defined H (
GOTO 10
)
if defined M (
GOTO 10
)
:10
set /a H1=%H%*3600
set /a M1=%M%*60
echo %H1%
echo %M1%
set /a TOTAL=H1+M1
ECHO %TOTAL%
SHUTDOWN -S -T %TOTAL%
pause
EXIT
:20
SHUTDOWN -A
ECHO Shutdown canceled.
pause
EXIT
zer0Hexen, 30 метров, питание по витухе... ненадо так делать.
бросьте рядом питалово от родного блока , на коротком проводе родном
если заработает - проблема витухе (перебита), либо опять же в витухе \ БП - слишком большая потеря мощности
YgrecK, ненадо исопльзовать чипсет Мат платы для рейда. тем более чипсет H ))
возможно он банально перегревается
кстати он запросто может перегерваться и без рейда(ну тоесть на софтовом) если будет гоняться трафф по нескольких SATA интерфейсам сразу
делать надо было софтовый рейд
а вообще я бы снес нафиг винду и поставил линукс + qemu-KVM для виртуализации на софтовый рейд mdadm.
ну или Проксмокс
ymfront, вариант с ноутбуком никогда не бывает дешевле
разве что рассмотреть варианты китайцев, например хорошие ноуты у Mechrevo , серия Аврора X или X pro, на интеле с маркировкой HX
areaLEONHART, ну вот и плати дальше.. зачем тебе этот гемор)
ты будешь даже за 40к окупать свой сервак с такими ценами лет 10... он устареет 2 раза
а тут ты перелез на любую VPS другую когда угодно и всё
AdeL4R, миниПК это - без возможностей апгрейда, если чет на плате подохнет - писец придёт
плюс перегревы
опять же больше 2х дисков обычно не поставишь. а usb это ненадежно
насчет интелов - я не встречал, хотя их в жизни 90% всех пк у меня..
а вот с амд вечные проблемы то с один, то с другим, то чипсеты, то драйвер, то еще что то...
Wolfman3152, ну считайте... дистанцию то. иначе тут неясность
вообще это не Ваша проблема - а провайдера.
заказали 1гб\с тариф - пусть провайдер себе голову и делает, это не проблема клиента что провайдер не расположил оборудование ближе