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

    loban_ser
  • 17796
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 577
  • Репутация:24

    [+] [-]
goga8686,
@Echo OFF
set n=\SANDISK
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% >nul 2>nul&&set DrvLett=%%I
(
echo.[Config]
echo.ext=.shl
echo.BackFile=%%temp%%\PsMgr.bck
echo.Idx=PsMgrCache.idx
echo.[Path]
echo.Drives=[Boot=%DrvLett%][Removable=%DrvLett%][Fixed=%DrvLett%]:\XMPE\Programs
)>%DrvLett%:\XMPE\PsMgr.ini
start "" /b %windir%\System32\au3381.exe %windir%\PsMgr.a3x
Exit /B
Разберетесь, что нужно свое подставить?
Ну и можно ярлык вывести куда угодно

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

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

    [+] [-]
на любом диске создаю папку SANDISK в корне диска (на системном С) и что?
как я понял, нужно имя диска, на котором был запущен наш батник (и на котором он находится)?
таки так:
for %%a in ("%~dp0") do set DrvLett=%%~da
в переменной DrvLett будет имя диска с символом : (C: или D:) - там, где мы сохранили наш батник (не важно где, где-то там в глубине папок)

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

    loban_ser
  • 17796
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 577
  • Репутация:24

    [+] [-]
wadimus,
Вот именно так:
@Echo OFF
set n=\Flesh
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% >nul 2>nul&&set DrvLett=%%I
(
echo.[Config]
echo.ext=.shl
echo.BackFile=%%temp%%\PsMgr.bck
echo.Idx=PsMgrCache.idx
echo.[Path]
echo.Drives=[Removable=%DrvLett%][Fixed=%DrvLett%]:\XMPE\Programs
)>%DrvLett%:\XMPE\Programs\PsMgr.ini
start "" /b %windir%\System32\au3381.exe "%DrvLett%:\XMPE\Programs\PsMgr.a3x"
Exit /B
Все работает как надо,
71091как я понял, нужно имя диска, на котором был запущен наш батник (и на котором он находится)?
батник может находится где угодно


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

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

    [+] [-]
loban_ser
начало работы вашего батника:
- есть некая папка как метка (set n=\Flesh) - папка или файл Flesh
- эта папка находится в корне(!) диска (%%I:%n%) то есть в C:\Flesh или D:\Flesh ..
- проверяем существование этой метки, пытаясь диркнуть все существующие пути по переменной
- первая попавшаяся метка ловится и выполняется заполнение некоего файла нужной информацией
- нету метки - нету действий
нам важно что?
- флешка с установленной меткой?
- или диск, который присвоен флешке?
батник находится где? на флешке? если да - зачем нам ажурная этажерка?
я и пишу:
for %%a in ("%~dp0") do set DrvLett=%%~da
как замена
set n=\Flesh
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% >nul 2>nul&&set DrvLett=%%I
в переменной DrvLett - буква диска, откуда был запущен наш батник!
диск флешки же есть? батник находится на этой флешке?

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

    loban_ser
  • 17796
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 577
  • Репутация:24

    [+] [-]
wadimus,бантик может находится в самом ядре PE, можно вывести ярлык допустим на рабочий стол,
Flesh это маркерный файл находящийся в корне флешки с которой нужно запустить программы
На скриншота выше видно, что присутствуют два диска с одинаковым набором программ, вообще все как и просил
goga8686,

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

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

    [+] [-]
loban_ser, во! батник в любом месте нашей флешки.
давай я поясню свою строку:
- запускаем батник, он определяет своё местонахождение %~dp0
- присваиваем это местонахождение (а оно типа такого: U:\--Sand\1\) переменной %%a
- и из этой переменной выделяем только букву диска %~da (в моём случае это U:)
в справке к команде For основные модификаторы:
%~I - из переменной %I удаляются обрамляющие кавычки (")
%~fI - переменная %I расширяется до полного имени файла
%~dI - из переменной %I выделяется только имя диска
%~pI - из переменной %I выделяется только путь к файлу
%~nI - из переменной %I выделяется только имя файла
%~xI - из переменной %I выделяется расширение имени файла
%~sI - полученный путь содержит только короткие имена
%~aI - переменная %I расширяется до атрибутов файла
%~tI - переменная %I расширяется до даты /времени файла
%~zI - переменная %I расширяется до размера файла

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

    loban_ser
  • 17796
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 577
  • Репутация:24

    [+] [-]
wadimus,
Я это все знаю, но к чему это?
Я ведь объяснил, что бантик запуска может находится где угодно, не обязательно на той флешке на которой нужно запустить программы.
Я думаю вам лучше узнать у goga8686 где ему лучше его разместить.
Он попросил, я навоял по скоренькой, а откуда будет запускать сам разберётся, думаю речь шла о универсальности.

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

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

    [+] [-]
loban_ser, боюсь я все эти перенаправления, особенно поток ошибок (2>nul) ah ag

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

    goga8686
  • 15240
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 889
  • Репутация:73

    [+] [-]
loban_ser, aa Спасибо! всё работает.Сам батник мне не сложно запустить из корня флешки,главная "хотелка" чтобы не цеплялись программы с других флешек.

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

    loban_ser
  • 17796
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 577
  • Репутация:24

    [+] [-]
goga8686,
Я бы дополнил
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% >nul 2>nul&&set DrvLett=%%I || echo  Диск с софтом не найден&timeout /t 7 >nul&goto eof
с телефона не очень удобно писать, так что мильпардон

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

    Ander_73
  • 15549
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 3815
  • Репутация:127

    [+] [-]
loban_ser, только вот так:
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% >nul 2>nul&& set DrvLett=%%I ||(
echo  Диск с софтом не найден
timeout /t 7 >nul
goto :eof
)
---
А диски X Y Z совсем некошерные? ab

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

    loban_ser
  • 17796
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 577
  • Репутация:24

    [+] [-]
71116только вот так:
Да. благодарю!
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% >nul 2>nul&&set DrvLett=%%I
If Not DEFINED DrvLett echo Диск с софтом не найден!!!&timeout /t 7 /NOBREAK>nul&goto :eof
71116А диски X Y Z совсем некошерные?
Известно почему, X Y в РЕ могут быть заняты, ну а добраться до Z......
просто не представляю сколько должно флешек присоеденено.
71118Нет у тебя явной метки eof. Есть неявная метка :eof
исправил
@Echo OFF
set n=\Flesh
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% >nul 2>nul&&set DrvLett=%%I
If Not DEFINED DrvLett %windir%\System32\au3381.exe %~DP0end.a3x&goto :eof
(
echo.[Config]
echo.ext=.shl
echo.BackFile=%%temp%%\PsMgr.bck
echo.Idx=PsMgrCache.idx
echo.[Path]
echo.Drives=[Removable=%DrvLett%][Fixed=%DrvLett%]:\XMPE\Programs
)>%DrvLett%:\XMPE\Programs\PsMgr.ini
start "" /b %windir%\System32\au3381.exe "%DrvLett%:\XMPE\Programs\PsMgr.a3x"
Exit /B
[Shortcut]
exe=Hidcon.exe
lnk=Soft Xemom1 for Drive Label=Flesh
Desktop=\
workdir=\
icon=\icon.ico
args=PsMgr.bat
desc=Подключение программ Soft Xemom1
SplashTextOn("Soft", "Диск с софтом не найден!!!", 300,50, 100, 100, 0, "", 12)
Sleep(3000)
SplashOff()


Последний раз редактировалось: loban_ser (2019-10-29 04:54), всего редактировалось 5 раз(а)

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

    Ander_73
  • 15549
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 3815
  • Репутация:127

    [+] [-]
loban_ser, а ты упрямый! Нет у тебя явной метки eof. Есть неявная метка :eof
ab


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

Текущее время: 23-Ноя 10:55

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


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