Cryzer
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Возник вопрос по поводу недавнего кода (немного усовершенствовал): Код: @echo off >nul chcp 1251 set "Label=WINDOWS VISTA (игровая)" for %%a in (Z: Y: X: W: V: U: T: S: R: Q: P: O: N: M: L: K: J: I: H: G: F: E: D: C:) do if exist %%a\. for /f "tokens=6,*" %%b in ('vol %%a') do if "%%c" == "%Label%" set Drive=%%a if not "%Drive%" == "" (echo Label: "%Label%" && echo Letter: %Drive%) else (echo Label "%Label%" is missing) if not "%Drive%" == "" if exist "ReMount.exe" ( cmd.exe /C "ReMount.exe" -ReMount %Drive% V: ) ELSE ( echo File ReMount.exe is not exist. ) pause set "Label=Metka123" for %%a in (Z: Y: X: W: V: U: T: S: R: Q: P: O: N: M: L: K: J: I: H: G: F: E: D: C:) do if exist %%a\. for /f "tokens=6,*" %%b in ('vol %%a') do if "%%c" == "%Label%" set Drive=%%a if not "%Drive%" == "" (echo Label: "%Label%" && echo Letter: %Drive%) else (echo Label "%Label%" is missing) if not "%Drive%" == "" if exist "ReMount.exe" ( cmd.exe /C "ReMount.exe" -ReMount %Drive% X: ) ELSE ( echo File ReMount.exe is not exist. ) pause echo. pause > nul | Во второй половине кода, когда по метке Metka123 определяется текущая буква, в случае отсутсвия этой метки должно писаться соответственное сообщение (Label Metka123 is missing), но вместо этого выполняется замена буквы на другую, причём переменная %Drive% (т.е. якобы текущая буква несуществующей Metka123) оказывается равной переменной %Drive% из первой половины кода (текущая буква WINDOWS VISTA). Выяснил, что проблему можно исправить, изменив во второй половине кода %Drive% на %Drive2%. А есть ли другие варианты исправления?:) И ещё вот такой вопрос: Предположим, в папке papka1 лежат файлы bat1.bat и file1.exe, причём при запуске bat1.bat запускается file1.exe. bat1.bat выглядит примерно так: Код: @echo off echo _____________ echo run file1.exe file1.exe echo _____________ exit | На директорию выше лежит файл bat2.bat. Он должен запустить в своём окне bat1.bat. bat2.bat имеет примерно такое содержимое: Код: @echo off echo run papka1\bat1.bat cmd.exe /C "papka1\bat1.bat" pause exit | Я думал, таким образом запустится файл file1.exe, но вместо этого появляется ошибка ""file1.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом". В итоге файл bat1.bat работает как надо, а файл bat2.bat - нет. А хотелось бы, чтобы работали оба. Поиском пользовался, но ничего про такое не нашёл :) Кто поможет? | Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 16:17 27-12-2011 | Исправлено: Cryzer, 16:20 27-12-2011 |
|