创建BAT文件以共享多个文件夹及其子文件夹

时间:2016-10-24 16:13:39

标签: windows batch-file share

我有一个文件服务器,上面有多个文件夹需要共享。偶尔,股票消失,需要重新分享(超出了这个问题的范围,我将其作为一个单独的问题处理)。目前,我正在寻找一种方法,以便在发生这种情况时通过单个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” - 我想用JUST替换参数的第一部分,而不是整个路径。

理想情况下,这将共享“D:\ Shares \ 00_Users \ JSmith”作为名为“JSmith”的共享

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

只需使用basename&可在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 

答案 1 :(得分:0)

在上面的帮助下,这是工作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