[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
Приветствую господа!
Есть скрипт:
@echo off
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%I:\wind set PUH=%%I:
start /w %PUH%\wind\setup64.cmd
Можно ли сделать что бы не проверялись катрийдеры?
Когда скрипт начинает работу показывает окошко о пустом дисководе. Чем больше дырок на катрийдере, тем больше окошек...
Где то это обсуждалось, но не нашел.....


Последний раз редактировалось: puhpol (2018-10-30 20:41), всего редактировалось 1 раз

[Цитировать]

    Xemom1
  • 175
  • Стаж: 9 лет 2 месяца
  • Сообщений: 862
  • Репутация:88

    [+] [-]
Привет!
@echo off
set n=\PUH\wind\Setup64.cmd
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
for /F "tokens=*"  %%i in (' vol %%a: ') do (
if exist %%a:%n% start %%a:%n%
if exist %%a:%n% exit
)
)
exit
Значения можно поставить свои.
Правда не проверял!

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
Xemom1, Приветствую!
Спасибо огромное! Только вот я пялился сейчас на все это дело.... И так и не понял как скрипт под себя переделать....
Имею на данный момент вот:
@ECHO OFF
for %%I in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%I:\puhp set PUH=%%I:
(cmdow @ /HID) & (pecmd.exe load %PUH%\puhp\Programs\menu\setup.ini)
Exit
Поймешь про что оно....

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
@echo off
set n=\puhp\Programs\menu\
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
for /F "tokens=*"  %%i in (' vol %%a: ') do (
if exist %%a:%n% start %%a:(cmdow @ /HID) & (pecmd.exe load %n%\setup.ini)
if exist %%a:%n% exit
)
)
exit
Этот вариант отрабатывает, но не закрывается окошко CMD..... На пустые диски не ругается....
З.Ы. ПРивет Саня!

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
ВСЕ ... Огромное спасибо разобрался:
@echo off
set n=\puhp\Programs\menu
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
for /F "tokens=*"  %%i in (' vol %%a: ') do (
if exist %%a:%n% start %%a:pecmd.exe load %n%\setup.ini
if exist %%a:%n% exit
)
)
exit
То что доктор прописал.....Xemom1 СПАСИБО!

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
puhpol,
@echo off
set n=\puhp\Programs\menu\setup.ini
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir %%I:%n%&&start pecmd.exe load "%%I:%n%"&&exit
echo УВЫ, ничего не найдено!
exit

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
conty9, Приветствую!
Спасибо, уже прочитал.....
А вот вопрос: А чем хуже , или в чем разница по сравнению с этим:
@echo off
set n=\puhp\Programs\menu
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
for /F "tokens=*"  %%i in (' vol %%a: ') do (
if exist %%a:%n% start %%a:pecmd.exe load %n%\setup.ini
if exist %%a:%n% exit
)
)
exit
Уже говорил что скрипты понимаю только на интуитивном уровне...
Отрабатывают скрипты почти одинаково... Только в твоем варианте в окошке CMD (которое мигает)больше букав.

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
puhpol, в моем варианте код компактнее. И, по идее, он должен работать быстрее (вариант от Xemom1 делает разбор по токенам меток дисков). Хотя разница по времени - на уровне милисекунд.

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
Приветствую господа!
Возник вопрос:
Нужно найти диск с папкой допустим \puhp\instal
И запустить скрипт setup.cmd
При этом хотелось бы что бы не показывал сообщения о пустых дисках.
Оно как то так должно быть?
@echo off
set n=\puhp\instal
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir %%I:%n%&&start setup.cmd
echo УВЫ, ничего не найдено!
exit

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
@echo off
set n=\puhp\instal\setup.cmd
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir "%%I:%n%"&&start "" "%%I:%n%"&&exit
echo УВЫ, ничего не найдено!
exit

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

    [+] [-]
conty9, Огромное СПАСИБО!!! az
Тады еще один вопрос:
Я правильно понял, файл setup.cmd так должон выглядеть?
@Echo Off
:: Назначение переменной
set n=\puhp\instal\
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir "%%I:%n%"
echo УВЫ, ничего не найдено!
:: Импорт твиков реестра
start /wait regedit /s %n%\uac.reg
:: Установка приложений
start /wait %n%\XnShellEx\start.cmd
start /wait %n%\UltraISO-9.6.5.3237.exe /S /I
start /wait %n%\SumatraPDF-3.0.exe /S /I
start /wait %n%\VLCMediaPlayer-2.2.1.exe /S /I
start /wait %n%\WinRAR.v5.30.exe /S /IRU
start /wait %n%\USB.Safely.Remove.v5.3.8.1233.exe /S /RU
start /wait %n%\SopCast.exe /S
start /wait %n%\npp.6.8.8.exe /S
start /wait %n%\2003_micro\Office2003micro.exe /y
start /wait %n%\2003_micro\Office2007support.exe
exit

[Цитировать]

    Joker-2013
  • 1039
  • Стаж: 8 лет 9 месяцев
  • Сообщений: 2053
  • Репутация:120

    [+] [-]
  • Откуда: из прошлого
Я бы лично, несколько бы упрастил...
@Echo Off
:: Назначение переменной
set n=\puhp\instal\
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir "%%I:%n%"
echo УВЫ, ничего не найдено!
::Переход в папку файлов
cd /d  "%n%"
:: Импорт твиков реестра
regedit /s "uac.reg"
:: Установка приложений
XnShellEx\start.cmd
UltraISO-9.6.5.3237.exe /S /I
SumatraPDF-3.0.exe /S /I
VLCMediaPlayer-2.2.1.exe /S /I
WinRAR.v5.30.exe /S /IRU
USB.Safely.Remove.v5.3.8.1233.exe /S /RU
SopCast.exe /S
npp.6.8.8.exe /S
2003_micro\Office2003micro.exe /y
2003_micro\Office2007support.exe
exit
если уж будешь использовать start, то так:
start /wait "" "file.exe" command
В начале обязательно кавычки

start

Start Запускает определенную программу или команду в отдельном окне. При запуске без параметров команда start создает новое окно командной строки.
Синтаксис
start ["заголовок"] [/dпуть] [/min] [/max] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | belownormal}] [/wait] [имя_файла] [параметры]
Параметры
"заголовок"
Указывает заголовок, выводимый в области заголовка окна.
/dпуть
Указывает каталог запуска.
/i
Передает начальные установки среды интерпретатора Cmd.exe в новое окно командной строки.
/min
Запускает новое окно командной строки в свернутом виде.
/max
Запускает новое окно командной строки в развернутом виде.
/
Запускает 16-битные программы в отдельном пространстве памяти.
/shared
Запускает 16-битные программы в отдельном пространстве памяти.
/low
Запускает приложение с низким приоритетом.
/normal
Запускает приложение с нормальным приоритетом.
/high
Запускает приложение с высоким приоритетом.
/realtime
Запускает приложение с приоритетом реального времени.
/abovenormal
Запускает приложение с приоритетом выше среднего.
/belownormal
Запускает приложение с приоритетом ниже среднего.
/wait
Запускает приложение с ожиданием окончания его работы.
/b
Запускает приложение без открытия нового окна командной строки. Обработка комбинации клавиш CTRL+C не производится, пока приложение не разрешит обработку CTRL+C. Для прерывания приложения следует использовать CTRL+BREAK.
имя_файла
Задает команду или программу для запуска.
параметры
Задает параметры, которые будут переданы вызываемой программе.
Примечания
Неисполняемые файлы можно запустить через сопоставление файла с приложением. Для этого просто введите имя файла (как команду). Для получения дополнительных сведений о создании этих сопоставлений в командном сценарии используйте команды assoc и ftype, см. Справочник.
Когда выполняется команда, в которой есть строка «CMD», являющаяся первым элементом без классификаторов расширения или пути, «CMD» заменяется значением переменной COMSPEC. Таким образом запрещается запуск cmd из текущего каталога.
При выполнении приложения 32-разрядного графического интерфейса пользователя, команда cmd не дожидается завершения приложения перед возвращением в командную строку. Этого не происходит, если приложение запускается из командной строки.
Когда выполняется команда, первый элемент которой не содержит расширения, CMD.EXE использует значение переменной среды PATHEXT для определения расширений, поиск которых будет производиться и порядок их поиска. По умолчанию значения для переменной PATHEXT: .COM, .EXE, .BAT, .CMD (т. е., синтаксис такой же, как у переменной PATH; различные элементы разделяются точками с запятой).
Когда ведется поиск исполняемого файла и не находится соответствующего расширения, команда start начинает поиск каталога. Если он существует, команда start отрывает программу Explorer.exe по этому маршруту.
Примеры
Для того чтобы запустить программу Myapp, но при этом остаться в текущем окне командной строки, следует использовать следующую команду:
start myapp

Информация от puhpol


Ошибочка не большая...
B - запуск приложения без создания нового окна с отключением обработки сочетания клавиш CTRL+C. Если приложение не обрабатывает сочетание клавиш CTRL+C самостоятельно, единственным способом его прерывания является использование сочетания клавиш CTRL+Break.
WAIT - Запуск приложения с ожиданием его завершения.

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
puhpol, зачем повторный поиск? Все делается проще
:: Назначаем рабочим каталог с бантиком :)
cd /d %~dp0
:: Импорт твиков реестра
regedit.exe /s uac.reg
:: Установка приложений
start /b /w .\XnShellEx\start.cmd
UltraISO-9.6.5.3237.exe /S /I
SumatraPDF-3.0.exe /S /I
VLCMediaPlayer-2.2.1.exe /S /I
WinRAR.v5.30.exe /S /IRU
USB.Safely.Remove.v5.3.8.1233.exe /S /RU
SopCast.exe /S
npp.6.8.8.exe /S
start /w .\2003_micro\Office2003micro.exe /y
start /w .\2003_micro\Office2007support.exe
exit
Если не нужно лицезреть окно консоли, тогда в первом скрипте используем /b для start
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir "%%I:%n%"&&start "" /b "%%I:%n%"&&exit

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 3 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
for %%I in (C D E F G H I J K L M N O P Q R S T U V W) do dir "%%I:%n%"&&start "" /b "%%I:%n%"&&exit
dir? не понял конструкции ai

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

    [+] [-]
17195не понял конструкции
Если dir "%%I:%n%" выполнена без ошибки, выполнить start ....

Страница 1 из 2


Показать сообщения:    

Текущее время: 28-Мар 23:03

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы