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

    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
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:
Эта строка ищет папку \wind на всех дисках и задает переменную PUH (не понял зачем, но работает и фиг с ним)
start /w %PUH%\wind\setup64.cmd
После того как найден нужный диск запускаем скрипт setup64.cmd с ожиданием его выполнения.--Скрипт запускающий программу в зависимости от разрядности системы.
Должен лежать рядом с программой.
@echo off
if exist %WinDir%\SysWOW64 (start WinInstaller64.exe) Else (start WinInstaller32.exe)
exit
if exist %WinDir%\SysWOW64 (start WinInstaller64.exe) Else (start WinInstaller32.exe)
Если в системной папке найдена папка SysWOW64 будет запущена программа WinInstaller64.exe, в противном случае WinInstaller32.exe.--
@Echo Off
cd /D "%~dp0"
IF EXIST "%ProgramFiles(x86)%" (
  Start /d"%~dp0" WinInstaller64.exe %*
) Else (
  Start /d"%~dp0" WinInstaller32.exe %*
)


Последний раз редактировалось: puhpol (2015-07-13 17:37), всего редактировалось 1 раз

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

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

    [+] [-]
Маленькую лепту внесу.
Вывод спец. символов в консоль или файл
set str="123^123<123>123%%123(123)123|123"
for /f %%a in (%str%) do echo:%%a

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

    zxen
  • 32
  • Стаж: 9 лет 4 месяца
  • Сообщений: 263
  • Репутация:21

    [+] [-]
  • Откуда: Siberia
Данный cmd, перемонтирует диск с которого он запущен, на другую букву, в данном случае на k:
@echo off
cd /d c:
for /f "tokens=*" %%a in (' mountvol %~d0 /l ') do ( mountvol %~d0 /d & mountvol k: %%a & exit )

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

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

    [+] [-]
Приветствую господа!
Опять прошу помощи по скриптам..... (я честно пытался сам разобраться,

но такие выражения

not Задает выполнение команды только в случае невыполнения условия. errorlevel число Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа. команда Команда, которая должна быть обработана в случае выполнения условия. строка1==строка2 Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1). Явно заданные строки нет необходимости заключать в кавычки. exist имя_файла Условие выполняется, если существует файл с именем имя_файла. оп_сравнения Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения.
меня вводят в ступор....
Задача: При установки ВИНДОВС нужно запустить программу только в редакции STARTER. (интеграция в WIM файл - не удобна)
В скрипте активатора нашел такие строки:
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | FINDSTR /i BASIC
IF NOT ERRORLEVEL 1 CSCRIPT %WinDir%\system32\slmgr.vbs -ipk 36T88-RT7C6-R38TQ-RV8M9-WWTCY
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | FINDSTR /i STARTER
IF NOT ERRORLEVEL 1 CSCRIPT %WinDir%\system32\slmgr.vbs -ipk 36Q3Y-BBT84-MGJ3H-FT7VD-FG72J
И если мои догадки верны, скрипт должен выглядеть так:
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | FINDSTR /i STARTER
IF NOT ERRORLEVEL 1 START /b /w data\Panel.exe
Вопрос:Я правильно понимаю? Такое вообще возможно? или я сам себе на фантазировал.......

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


Сам разобрался... Усе работает...

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

    rbskin
  • 439
  • Стаж: 9 лет
  • Сообщений: 35
  • Репутация:0

    [+] [-]
Приветствую!
Господа. В чем ошибка? При такой записи - работает
FOR %%i IN (C D E F G H I J K L N M O P Q R S T U V W X Y Z) DO IF EXIST %%i:\_Soft.Port\ start """" %%i:\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe -ai1 & exit
а в этом случае - тишина
set MyName=\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe -ai1
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 dir %%I:%MyName%&&start "" "%%I:%MyName%"&&exit
echo УВЫ, ничего не найдено!
exit

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

    SunOK
  • 9
  • Стаж: 9 лет 4 месяца
  • Сообщений: 352
  • Репутация:32

    [+] [-]
  • Откуда: Україна, Перлина Поділля
rbskin, возможные варианты ашипок:
1. Пробел в кавычках (сужу по сообщению)
&&start "" "%%I
2. Ключ -ai1 мешает выполнению команды dir.
3. Допустимо ли для команды dir использование имени файла в переменной? (сам не знаю)


Последний раз редактировалось: SunOK (2016-01-19 20:19), всего редактировалось 1 раз

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

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

    [+] [-]
175183. Допустимо ли для команды dir использование имени файла в переменной? (сам не знаю)
Судя по написанному выше имя файла можно. А вот ключ я бы точно не там писал....
set MyName=\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe
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 dir %%I:%MyName%&&start -ai1 """"%%I:%MyName%"&&exit
echo УВЫ, ничего не найдено!
exit
Хотя меня в данном случае слушать не стоит, еще тот скриптописец.....

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

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

    [+] [-]
Чтобы не перебирать все буквы
@echo off
for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives ^| more') do set drivers=%%b
echo %drivers%
for %%a in (%drivers%) do echo %%a

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

    rbskin
  • 439
  • Стаж: 9 лет
  • Сообщений: 35
  • Репутация:0

    [+] [-]
nikzzzz
Приветствую!
Обе записи (приведены выше) работают при ссылке на .exe файл,
а при добавлении ключа вторая запись не хочет.

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

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

    [+] [-]
rbskin,
Можно попробовать так
@echo off
set MyName=_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe
for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives ^| more') do set drives=%%b
1>nul 2>&1 (for %%a in (%drives%) do (dir "%%a%MyName%") && (start "" "%%a%MyName%" -ai1) && goto :eof)
echo УВЫ, ничего не найдено!
goto :eof

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

    sergeysvirid
  • 104
  • Стаж: 9 лет 3 месяца
  • Сообщений: 2495
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
17516
В чем ошибка?
При такой записи - работает
FOR %%i IN (C D E F G H I J K L N M O P Q R S T U V W X Y Z) DO IF EXIST %%i:\_Soft.Port\ start """" %%i:\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe -ai1 & exit
а в этом случае - тишина
set MyName=\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe -ai1
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 dir %%I:%MyName%&&start "" "%%I:%MyName%"&&exit
echo УВЫ, ничего не найдено!
exit
Может быть в том, что в пути у Вас после буквы диска и перед переменной не стоит символа обратного слэша "\"
да и как писалось выше ключик ai1 наверное не там указывать надо.
Я такой же скриптописец, как и puhpol ag , но попробуйте вот так:
set MyName=\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe
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 dir "%%I:\%MyName%"&&start "" /w -ai1 -gm2 "%%I:\%MyName%"&&exit

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

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

    [+] [-]
17533В чем ошибка?
Да ошибка в том, что ищется файл с именем "PartitionWizard.exe -ai1", а не "PartitionWizard.exe", а такого файла естественно нет. ag
Ну, и слеша не хватает.

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

    rbskin
  • 439
  • Стаж: 9 лет
  • Сообщений: 35
  • Репутация:0

    [+] [-]
nikzzzz
sergeysvirid
Приветствую! Попробовал варианты.
УВЫ, ничего!

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

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

    [+] [-]
set MyName=\_Soft.Port\MiniTool_Partition_Wizard_Server_9.0\PartitionWizard.exe
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 dir "%%I:%MyName%"&&start "" "%%I:%MyName%" -ai1&&exit

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

    rbskin
  • 439
  • Стаж: 9 лет
  • Сообщений: 35
  • Репутация:0

    [+] [-]
conty9
Приветствую!
Спасибо за ответ.
Теперь все прекрасно работает.

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


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

Текущее время: 28-Мар 22:33

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


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