Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
MakMed
4 / 4 / 5
Регистрация: 01.03.2016
Сообщений: 72
1

При выполнении батника появляется сообщение об ошибке "Непредвиденное появление: (0."

22.06.2016, 17:57. Просмотров 1284. Ответов 6
Метки нет (Все метки)

Добрый день, вот код, при выполнении батника выскакивает вот это: Непредвиденное появление: (0.
Причем код дальше не выполняется.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo on
cls
S:
md "TMP"
cd "TMP"
set /a v=0
for /l %%1 (0,1,3) do (
  for /l %%2 (0,1,9) do (
    for /l %%3 (0,1,9) do (
      echo %%v >%%1%%2%%3.txt
      %%v+=1
    )
  )
)
Добавлено через 28 минут
В цикле for IN не хватает, нашел ошибку.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2016, 17:57
Ответы с готовыми решениями:

Сообщение об ошибке "Непредвиденное появление: B." при выполнении команды "FOR %B IN (*) DO ..."
бегло прочитал http://www.cyberforum.ru/cmd-bat/thread877664.html не нашел подходящей инфы пишу...

Сообщение об ошибке "Непредвиденное появление: |."
Всем привет! Не буду мудрить напишу здесь, бо оно в тему. есть комманда ping 192.168.0.18 -n 1...

Сообщение об ошибке "Непредвиденное появление: Y."
Здравствуйте! У меня возникла проблема при создании bat файла. Я делаю лабораторную работу:...

Сообщение об ошибке "Сервер RPC недоступен" при выполнении команды TASKLIST с ключом /S
Здравствуйте. Возникла следующая проблема: нужно вывести на экран список выполняющихся задач,...

Ошибка "Непредвиденное появление" при использовании оператора условного выполнения команд
Приветствую. Есть некоторый код, который правильно выполняется, но вот функция :EXIT работает...

6
YuS_2
Любознательный
1119 / 650 / 197
Регистрация: 10.03.2016
Сообщений: 1,505
22.06.2016, 18:00 2
Windows Batch file
1
for /?
1
MakMed
4 / 4 / 5
Регистрация: 01.03.2016
Сообщений: 72
22.06.2016, 18:20  [ТС] 3
Новы вопрос почему переменная v не увеличивается на 1
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo on
cls
S:
md "TMP"
cd "TMP"
set /a v=0
for /l %%1 in (0,1,3) do (
  for /l %%2 in (0,1,9) do (
    for /l %%3 in (0,1,9) do (
      echo %v% > %%1%%2%%3.txt
      if %%1 equ 3 ( exit /b )
      set /a v+=1
    )
  )
)
0
ComSpec
3416 / 1959 / 629
Регистрация: 26.02.2014
Сообщений: 1,457
22.06.2016, 18:30 4
Лучший ответ Сообщение было отмечено MakMed как решение

Решение

Без SETLOCAL ENABLEDELAYEDEXPANSION и !v! код правильно выполняться не будет.

Вот корректный вариант:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
 
if exist S:\ (cd /d S:\) else exit /b 1
if not exist "TMP" md "TMP"
cd "TMP"
 
setlocal enabledelayedexpansion
set v=0
for /l %%1 in (0,1,3) do (
  for /l %%2 in (0,1,9) do (
    for /l %%3 in (0,1,9) do (
      echo !v!>%%1%%2%%3.txt
      if %%1 equ 3 endlocal & exit /b 0
      set /a v+=1
    )
  )
)
.
1
YuS_2
Любознательный
1119 / 650 / 197
Регистрация: 10.03.2016
Сообщений: 1,505
22.06.2016, 18:38 5
Цитата Сообщение от MakMed Посмотреть сообщение
почему переменная v не увеличивается на 1
Переменная увеличивается, но вот вывод её в цикле (внутри оператора "скобки") необходимо делать с помощью отложенного расширения переменных, иначе Вы получите значение переменной на момент входа в цикл, т.е. не вычисленное значение, а полученное при раскрытии переменной до момента начала выполнения цикла...
В общем, если коротко, то так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo on
cls
S:
md "TMP"
cd "TMP"
set /a v=0
setlocal enabledelayedexpansion
for /l %%1 in (0,1,3) do (
  for /l %%2 in (0,1,9) do (
    for /l %%3 in (0,1,9) do (
      echo !v! > %%1%%2%%3.txt
      if %%1 equ 3 ( exit /b )
      set /a v+=1
    )
  )
)
А для чего используется:
Windows Batch file
1
S:
?
1
MakMed
4 / 4 / 5
Регистрация: 01.03.2016
Сообщений: 72
22.06.2016, 18:43  [ТС] 6
Спасибо,тут я разобрался. S:= переход на диск S, вопрос еще, в 3 и 13 строке зачем в конце 1 и 0?
0
YuS_2
Любознательный
1119 / 650 / 197
Регистрация: 10.03.2016
Сообщений: 1,505
22.06.2016, 18:49 7
Цитата Сообщение от MakMed Посмотреть сообщение
S:= переход на диск S
Переход необходимо осуществлять с помощью команды "cd" ("chdir")
cd /?
Цитата Сообщение от MakMed Посмотреть сообщение
в 3 и 13 строке зачем в конце 1 и 0?
Это присвоенный вручную errorlevel для команды "exit /b"
1
22.06.2016, 18:49
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2016, 18:49

"Непредвиденное появление"
При выполнении следующего скрипта: set "srcpath=%~dp0" set...

Сообщение об ошибке "Не удается найти указанный файл" при копировании файла
Нужно скопировать файл D:\Общая папка\_Нормочасы\Нормочасы_base.accdb в корневой диска v copy...

Сообщение об ошибке "500 I won't open a connection to 0.0.0.0 (only to 178.45.67.234)" при работе с ftp.exe
Total comander нормально подключается по ftp как в активном, так и в пассивном режимах и грузит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.