Re: Помогите получить имя текущего каталога

From
Vitaly E. Lavrov (2:5030/580)
To
Alexander Mingalev (2:5054/37.63)
Date
2005-04-26T11:42:24Z
Area
RU.WINDOWS.NT
Alexander Mingalev <Alexander_Mingalev@p44.f832.n5030.z2.fidonet.org> wrote:
>  IZ> Снимите с ручника, плиз. В коммандном скрипте (cmd.exe) нужно получить
>  IZ> имя текущего каталога (не полное, а имя самого нижнего уровня, на
>  IZ> котором я сейчас нахожусь). Приблизительно так: cd /d "C:\Program
>  IZ> Files\WinAmp" getdir WinAmp

> 1. перейти на 4nt

> setlocal
> function last_dir=`%@instr[%@eval[%@index[%@unq[%1],\,-1]+1],80,%@unq[%1]]`
> function unq=`%@if["%@ascii[%@left[1,%1]%@right[1,%1]]"=="34
> 34",%@if[%@len[%1] gt 2,%@instr[1,%@eval[%@len[%1]-2],%1],],%1]`
> set p="D:\Program Files\WinAmp"
> echo %@last_dir[%p]
> endlocal

Какой ужас 8-/
и это все вместо "basename `pwd`" !

Почти уверен, что взяв из cygwin-а эту утиль (basename) получите
нужный результат.

> 2. забыть про cmd как про страшный сон и юзать встроенный в win2000+
> wsh

> if (/.*[\\\/]([^\\\/]+)[\\\/]?$/.test(WScript.Arguments.Unnamed.Item(0)))
>     WScript.Echo(RegExp.$1);
или sed-ом
pwd | sed -e "s,^.*[\\/],,"
т.е. все что умеет regexp поможет в решении данной задачи.

-- 
 Vitaliy E. Lavrov                             | nic-hdl: VEL1-RIPN

--- FIDOGATE 4.3.6-snp8
 * Origin: St. Petersburg State University of Aerospace Instrume (2:5030/580.0)
SEEN-BY: 46/50 400/814 450/210 1024 465/222 5000/5000 5010/53 5011/13 5015/10
SEEN-BY: 5019/31 5020/545 715 4441 5021/29 5025/3 5027/16 5030/7 37 41 55 61
SEEN-BY: 5030/115 215 251 254 266 580 1023 1115 5035/38 5038/9 5047/43 5048/7
SEEN-BY: 5054/1 4 8 9 36 37 45 63 67 81 84 5058/1 5069/7 5080/1003 5085/13
SEEN-BY: 5095/20 5096/18 6000/254 6083/11
PATH: 5030/580 115 5020/545 5054/1 37