Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Задача: текущей папке присвоить свободную букву диска (http://forum.oszone.net/showthread.php?t=178016)

dascon 12-06-2010 17:13 1432849

Задача: текущей папке присвоить свободную букву диска
 
Задача: текущей папке присвоить свободную букву диска.
Т.е., например, файл file.bat расположен в каталоге C:\Folder\Proga1. Следовательно, в file.bat должно быть что-то вроде этого:
Код:

dir=текущий_каталог      // "C:\Folder\Proga1"
letter=свободная_буква_диска // например, W:
subst letter dir


Morpheus 12-06-2010 23:52 1433025

dascon, так что ли?
Код:

@echo off
set dir="C:\Folder\Proga1"
set letter="W:"
subst %letter% %dir%


dascon 13-06-2010 00:40 1433048

нет

dascon 13-06-2010 01:06 1433055

dir и letter должны "вычисляться". Или это невозможно?

Clever_man 13-06-2010 01:19 1433059

Вместо dir используйте %CD% (рабочий каталог содержит, те тот, в котором вызывается bat-файл)
По поводу имени диска: если вызывать subst с буквой диска, которая существует, то ошибка. Тогда можно попробовать перебирать буквы по алфавиту, до тех пор, пока буква занята. Щас попробую освежить свои знания по коммандной строке, может выдам чего ))

dascon 13-06-2010 02:06 1433081

ок, выяснили, что:
Код:

set dir="%cd%"
осталось
set letter=??????????????

Clever_man 13-06-2010 02:48 1433093

dascon, да можно прямо так:
Код:

subst x: %CD%
Я не знаю, как буквы перебрать =\

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

Уточните: либо текущей папке, либо папке, в которой расположен батник (они не обязательно совпадают).

megaloman 13-06-2010 15:48 1433309

Я бы предпочел перебор дисков делать не от C к Z, а наоборот, или еще в каком-нибудь ином порядке, так как при подсоединении флешки ей присваивается первая свободная буква диска, при этом буква диска, организованная Subst, считается свободной.

dascon 13-06-2010 17:45 1433374

Цитата:

Уточните: либо текущей папке, либо папке, в которой расположен батник (они не обязательно совпадают)
в которой расположен батник

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.

Время: 00:59.
© OSzone.net 2001-