2016-10-09 5 views
0

Я просто хочу сказать, что я немного noob в пакетных файлах. Парой приложений является цифровая платформа распространения. Я пытаюсь сделать пакетный файл, который изменит паровую игру. Я выясню, как изменить игру, но приложение «steam» можно установить в любой каталог на любом диске. Я знаю, что в диспетчере задач вы можете щелкнуть правой кнопкой мыши по процессу и щелкнуть по открытому файлу, и он доставит вас туда, где находится приложение. Мне было интересно, если кто-нибудь знает, как это сделать в пакетном файле, а затем включить его в каталог, например,% filelocation% \ content \ contentКак найти каталог исполняемого файла с использованием командного файла

+1

Появляется дубликатом вопроса на этом [ссылка] (HTTP: // StackOverflow. com/a/12071458/6738015) – Compo

ответ

0

Исполняемый и путь оба должны быть найдены в определенном месте в реестре пользователей:

@Echo Off 
Set "SExe=" 
Set "SPth=" 
For /F "Tokens=1,2*" %%A In ('Reg Query HKCU\SOFTWARE\Valve\Steam') Do (
    If "%%A" Equ "SteamExe" Set "SExe=%%C" 
    If "%%A" Equ "SteamPath" Set "SPth=%%C") 
If Not Defined SExe Exit/B 
Rem Your commands go under here for example 
Echo=The full path to the Steam executable is "%SExe%" 
If Defined SPth Echo=The Steam folder path is "%SPth%" 
Timeout -1 1>Nul 
0

Предполагая, что исполняемый файл Steam называется steam.exe и предполагается, что исполняемый файл находится в каталоге в переменной среды PATH системы вы можете получить местоположение файла с помощью команды where.

where steam.exe 

Теперь вам нужно будет получить выход этой команды в переменную.

for /f "tokens=*" %a in ('where steam.exe') do set filelocation=%a 

Теперь, из-за одной из многих, многие причуды в ПАРТИЯ выше for команда будет работать как есть в окне командной строки, но нужно быть немного изменен для того, чтобы работать в файле сЕРИЙНОГО.

for /f "tokens=*" %%a in ('where steam.exe') do set filelocation=%%a 

Примечания Есть два % символов, предшествующих письмо a

Если steam.exe не на переменной PATH системы, то вам нужно запросить реестр для каталога установки в Steam. Для этого вам нужно будет использовать команду reg где-то под HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

p.s. К сожалению, я не могу дать вам более полный ответ прямо сейчас, так как у меня нет машины Windows в данный момент

+0

К сожалению, для него нет переменной окружения. – Ben

+0

Вы всегда можете искать файл по «dir/s C: \ AcroRd32.exe», он предоставит вам все AcroRd32.exe на диске C. – kgimpel

+0

Но тогда вам нужно выполнять поиск по всем дискам. – Ben

0

Если вы за Steam, в частности, вы не можете полагаться на то, что он находится у пользователя PATH, и вы, вероятно, не хотите искать весь диск для него. (В любом случае, вы можете найти неправильный исполняемый файл.)

Вам лучше запросить реестр для их установки Steam.

@echo off 
rem this is quick and dirty 
reg query HKCU\Software\Valve\Steam /v SteamExe>nul 
if errorlevel 1 echo Steam not found for current user & goto :eof 
for /f "delims=" %%a in ('reg query HKCU\Software\Valve\Steam /v SteamExe') do set steampath=%%a 
steampath=%steampath:~26% 
echo %steampath% 
0

Он работает как с 32, так и с 64 версиями Windows.

@echo off 
(for /f "usebackq tokens=1,2,*" %%a in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam" /v UninstallString`) do set SteamPath32=%%c)>nul 2>&1 
(for /f "usebackq tokens=1,2,*" %%a in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam" /v UninstallString`) do set SteamPath64=%%c)>nul 2>&1 
set SteamPath=%SteamPath64%%SteamPath32% 
set SteamPath=%SteamPath:\uninstall.exe=% 
echo %SteamPath% 
pause>nul 
Смежные вопросы