Задача: текущей папке присвоить свободную букву диска
Задача: текущей папке присвоить свободную букву диска.
Т.е., например, файл file.bat расположен в каталоге C:\Folder\Proga1. Следовательно, в file.bat должно быть что-то вроде этого:
Код:
dir=текущий_каталог // "C:\Folder\Proga1"
letter=свободная_буква_диска // например, W:
subst letter dir
|
dascon, так что ли?
Код:
@echo off
set dir="C:\Folder\Proga1"
set letter="W:"
subst %letter% %dir%
|
dir и letter должны "вычисляться". Или это невозможно?
|
Clever_man |
13-06-2010 01:19 1433059 |
Вместо dir используйте %CD% (рабочий каталог содержит, те тот, в котором вызывается bat-файл)
По поводу имени диска: если вызывать subst с буквой диска, которая существует, то ошибка. Тогда можно попробовать перебирать буквы по алфавиту, до тех пор, пока буква занята. Щас попробую освежить свои знания по коммандной строке, может выдам чего ))
|
ок, выяснили, что:
осталось
set letter=??????????????
|
Clever_man |
13-06-2010 02:48 1433093 |
dascon, да можно прямо так:
Я не знаю, как буквы перебрать =\
|
Petya V4sechkin |
13-06-2010 11:33 1433185 |
dascon, можно так:
Код:
@Echo Off
For %%I In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do Subst %%I: "%CD%" >nul && GoTo ExitLoop
Echo Нет свободных букв дисков
:ExitLoop
Уточните: либо текущей папке, либо папке, в которой расположен батник (они не обязательно совпадают).
|
Я бы предпочел перебор дисков делать не от C к Z, а наоборот, или еще в каком-нибудь ином порядке, так как при подсоединении флешки ей присваивается первая свободная буква диска, при этом буква диска, организованная Subst, считается свободной.
|
Цитата:
Уточните: либо текущей папке, либо папке, в которой расположен батник (они не обязательно совпадают)
|
в которой расположен батник
|
Petya V4sechkin |
13-06-2010 18:10 1433385 |
dascon, тогда так:
Код:
@Echo Off
Set P=%~dp0
Set P=%P:~0,-1%
For %%I In (Z Y X W V U T S R Q P O N M L K J I H G F E D C) Do Subst %%I: "%P%" >nul && GoTo ExitLoop
Echo Нет свободных букв дисков
:ExitLoop
|
Время: 00:59.
© OSzone.net 2001-