@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
Разберетесь, что нужно свое подставить? Ну и можно ярлык вывести куда угодно
на любом диске создаю папку SANDISK в корне диска (на системном С) и что? как я понял, нужно имя диска, на котором был запущен наш батник (и на котором он находится)? таки так:
Код:
for %%a in ("%~dp0") do set DrvLett=%%~da
в переменной DrvLett будет имя диска с символом : (C: или D:) - там, где мы сохранили наш батник (не важно где, где-то там в глубине папок)
@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
Все работает как надо,
wadimus писал(а):
71091как я понял, нужно имя диска, на котором был запущен наш батник (и на котором он находится)?
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 - буква диска, откуда был запущен наш батник! диск флешки же есть? батник находится на этой флешке?
wadimus,бантик может находится в самом ядре PE, можно вывести ярлык допустим на рабочий стол, Flesh это маркерный файл находящийся в корне флешки с которой нужно запустить программы На скриншота выше видно, что присутствуют два диска с одинаковым набором программ, вообще все как и просил goga8686,
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 расширяется до размера файла
wadimus, Я это все знаю, но к чему это? Я ведь объяснил, что бантик запуска может находится где угодно, не обязательно на той флешке на которой нужно запустить программы. Я думаю вам лучше узнать у 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
с телефона не очень удобно писать, так что мильпардон
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 )
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
Ander_73 писал(а):
71116А диски X Y Z совсем некошерные?
Известно почему, X Y в РЕ могут быть заняты, ну а добраться до Z...... просто не представляю сколько должно флешек присоеденено.
Ander_73 писал(а):
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 раз(а)
loban_ser, а ты упрямый! Нет у тебя явной метки eof. Есть неявная метка :eof
Текущее время: 04-Апр 19:18
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы