.bat имя текущей папки - PullRequest
       2

.bat имя текущей папки

6 голосов
/ 03 октября 2010

В моем скрипте bat я вызываю другой скрипт и передаю ему строковый параметр

cscript log.vbs "triggered from folder <foldername> by Eric"

Строковый параметр, как вы видите, содержит имя папки, из которой вызывается скрипт. Какой правильный способ передать это динамически вставить это имя папки в сценарий?

Ответы [ 2 ]

19 голосов
/ 03 октября 2010

Если вам нужен каталог, в котором вы находитесь в данный момент, вы можете получить его из %cd%. Это ваш текущий рабочий каталог.

Если вы собираетесь изменить ваш текущий рабочий каталог во время выполнения скрипта, просто сохраните его при запуске:

set startdir=%cd%

, тогда вы можете использовать %startdir% в своем коде независимо от каких-либо изменений позже (которые влияют на %cd%).


Если вы просто хотите получить последний компонент этого пути (согласно вашему комментарию), вы можете использовать следующее в качестве базовой линии:

    @setlocal enableextensions enabledelayedexpansion
    @echo off
    set startdir=%cd%
    set temp=%startdir%
    set folder=
:loop
    if not "x%temp:~-1%"=="x\" (
        set folder=!temp:~-1!!folder!
        set temp=!temp:~0,-1!
        goto :loop
    )
    echo.startdir = %startdir%
    echo.folder   = %folder%
    endlocal && set folder=%folder%

Это выводит:

    C:\Documents and Settings\Pax> testprog.cmd
    startdir = C:\Documents and Settings\Pax
    folder   = Pax

Он работает, копируя символы с конца полного пути, по одному, пока не найдет разделитель \. Это не красиво и не эффективно, но пакетное программирование Windows редко бывает: -)

EDIT

На самом деле, существует простой и очень эффективный способ получения последнего имени компонента.

for %%F in ("%cd%") do set "folder=%~nxF"

Не проблема для этой ситуации, но если вы имеете дело с переменной, содержащей путь, который может заканчиваться или не заканчиваться \, то вы можете гарантировать правильный результат, добавив \.

for %%F in ("%pathVar%\.") do set "folder=%~nxF"
8 голосов
/ 03 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...