2015-09-12 5 views
0

Я хочу, чтобы мой скрипт нашел папку, которая начинается со строки «onedrive ...». Мой код выглядит так,Как получить имя из текущего каталога

@echo off 

set path="C:\Users\%USERNAME%" 

if exist %path% (
cd "%path%\onedrive*" 
echo %cd% 
cd 
) 
pause 

и выход я получаю,

C:\Users\310176421\Backupscript\source 
C:\Users\310176421\OneDrive for Business 

где первый один мой каталог BAT-файл и второй из них является линия я хочу, чтобы в Переменная.

Любые идеи?

+0

Возможно, [это] (http://stackoverflow.com/a/25440709/2861476) может помочь –

ответ

1

О, человек не делает этого, вы переписываете систему PATH. Вы должны использовать другое имя для этой переменной. А также вы должны установить его как локальный.

@echo off 
SETLOCAL 

REM blah blah 
set _my_custom_path=.... 

ENDLOCAL 
0

Вот простой пакетный код, который ищет в профиле каталоге текущего пользователя для каталога, начиная с строкой 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.

Смежные вопросы