Вот простой пакетный код, который ищет в профиле каталоге текущего пользователя для каталога, начиная с строкой OneDrive
и присваивает полный путь из первых нашла папку без кавычек в качестве переменного окружения выхода следующего перед выходом из партии.
@echo off
for /F "delims=" %%I in ('dir /AD /B /S "%USERPROFILE%\OneDrive*" 2^>nul') do (
set "OneDriveFolder=%%~I"
goto FoundFolder
)
echo Could not find a folder OneDrive.
goto :EOF
:FoundFolder
echo Found folder: %OneDriveFolder%
set "OneDriveFolder="
Для понимания используемых команд и как они работают, откройте окно командной строки, выполните там следующие команды, и читать полностью все справочные страницы отображаются для каждой команды очень тщательно.
dir /?
for /?
goto /?
set /?
Примечание 1: C:\Users\%USERNAME%
не всегда равна %USERPROFILE%
как каталог профиля может быть также на другом диске, чем диск C:
и Users
является только по умолчанию родительский каталог для профилей пользователей в Windows Vista и более поздних версиях.
Примечание 2: 2^>nul
перенаправляет вывод сообщений об ошибке с помощью команды DIR к stdout
к устройству nul
что означает подавление сообщения об ошибке в случае отсутствия каталога, начиная с OneDrive
найдено не чувствителен к регистру. ^
управляет перенаправлением оператора >
для команды ДЛЯ для получения 2>nul
применяется к команде DIR.
Возможно, [это] (http://stackoverflow.com/a/25440709/2861476) может помочь –