Я пишу пакетный скрипт Windows, который пытается определить, указывает ли значение пути (извлеченное из файла конфигурации приложения) на пользовательскую папку (например,% APPDATA%) или общую (например, C: \ ProgramData \ AppName)).
Долгосрочный способ сделать это состоит в том, чтобы попытаться проверить все возможные варианты установки, например, вот что я начал кодировать:
REM Get the value from the config file, entry is "set="
set locSettingsFile="%installFolder%\setting.data"
echo "Loc file %locSettingsFile%"
IF EXIST "%locSettingsFile%" (
echo "Location settings file found at: %locSettingsFile%"
REM Got the config file,now get the set=value entry
for /F "delims=" %%a in ('FINDSTR /R /C:"^set=" %locSettingsFile%') do set "setKeyVal=%%a"
echo %setKeyVal%
IF "%setKeyVal%"=="" (
echo "Set location is not set in %locSettingsFile%"
) ELSE (
REM Got the entry now extract the value from set=value
for /f "tokens=2 delims==" %%a in ("%setKeyVal%") do set "setVal=%%a"
echo "Set value is %setVal%"
REM Now check if it points to a user specific folder
IF /I %setVal:~0,9% == "%APPDATA%" IF /I %setVal:~1,8% == ":\USERS\"(
REM Its user specific
)
)
) ELSE (
echo echo "Location settings file does not exist: %locSettingsFile%"
)
Но,прежде чем я продолжу этот подход, я хотел бы спросить, есть ли простой однострочный, который может сказать мне, будет ли данный патч отображаться в пользовательскую папку.Помните также, что в некоторых системах папка пользователя может быть сетевым UNC-путем.