У меня есть файловый сервер с несколькими папками, которые нужно разделить. Иногда акции исчезают, и их необходимо повторно использовать (за пределами этого вопроса я рассматриваю это как отдельную проблему). На данный момент я ищу способ легко автоматизировать повторный общий доступ к папкам с помощью одного файла BAT, когда это происходит, чтобы я не вручную повторно делился несколькими десятками папок вручную.

Существует ограниченное количество определенных папок верхнего уровня, которые необходимо совместно использовать - Пользователи, Задания, Операции и т. Д. - это пока не проблема, я могу вручную указать их с помощью команды NET SHARE.

Я столкнулся с проблемой для нескольких папок, для которых также требуется общий доступ к всем подпапкам. Например, все папки в D: \ Shares \ 00_Users также должны быть общими.

У меня есть команда, которая предоставит общий доступ ко всем файлам в текущем каталоге, но не к файлам в другом каталоге, то есть мне нужно оставить копию BAT в общей папке, что не является хорошей идеей. Есть ли способ автоматизировать это, чтобы файл BAT совместно использовал каждую подпапку в другой папке?

Вот мой текущий код:

NET SHARE "NameOfShare=D:\Shares" /GRANT:Everyone,FULL /CACHE:None
FOR /D %%G IN (D:\Shares\00_Users\*.*) DO NET SHARE "%%G=%%G" /GRANT:Everyone,FULL /CACHE:None

Где я сталкиваюсь с проблемами, так это "%% G = %% G" - я хочу заменить первую часть параметра ТОЛЬКО именем папки, а не всем путем.

В идеале это должно разделять "D: \ Shares \ 00_Users \ JSmith" как общий ресурс с именем "JSmith".

Спасибо за помощь!

0
GJSchaller 24 Окт 2016 в 19:13

2 ответа

Лучший ответ

Просто используйте базовое имя и расширение, которые можно использовать в переменных FOR, например: "%%G=%%~nG%%~xG"

Фиксированный код:

NET SHARE "NameOfShare=D:\Shares" /GRANT:Everyone,FULL /CACHE:None
FOR /D %%G IN (D:\Shares\00_Users\*.*) DO NET SHARE "%%~nG%%~xG=%%G" /GRANT:Everyone,FULL /CACHE:None 
0
Jean-François Fabre 24 Окт 2016 в 18:46

С помощью вышеупомянутого, это окончательная форма рабочего BAT-файла:

Полный код использован в качестве примера:

NET SHARE "D:\Business=Business" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Engineering=Engineering" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Jobs=Jobs" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Operations=Operations" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Sales=Sales" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Service=Service" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Scans=Scans" /GRANT:Everyone,FULL /CACHE:None
NET SHARE "D:\Users=Users" /GRANT:Everyone,FULL /CACHE:None

FOR /D %%G IN (D:\Engineering\*.*) DO NET SHARE "%%~nG%%~xG=%%G" /GRANT:Everyone,FULL /CACHE:None
FOR /D %%G IN (D:\Operations\*.*) DO NET SHARE "%%~nG%%~xG=%%G" /GRANT:Everyone,FULL /CACHE:None
FOR /D %%G IN (D:\Sales\*.*) DO NET SHARE "%%~nG%%~xG=%%G" /GRANT:Everyone,FULL /CACHE:None
FOR /D %%G IN (D:\Users\*.*) DO NET SHARE "%%~nG%%~xG=%%G" /GRANT:Everyone,FULL /CACHE:None
0
GJSchaller 24 Окт 2016 в 17:30