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

Creating a BAT file to share multiple folders, and their sub-folders

我有一个文件服务器,上面有多个需要共享的文件夹。有时,共享会消失,需要重新共享(超出这个问题的范围,我将其作为一个单独的问题处理)。目前,我正在寻找一种方法,以便在发生这种情况时通过单个 BAT 文件轻松地自动重新共享文件夹,这样我就不用手动重新共享几十个文件夹了。

需要共享的特定顶级文件夹数量有限 - 用户、工作、操作等 - 到目前为止这不是问题,我可以使用 NET SHARE 命令手动指定它们。

我 运行 遇到的一个问题是少数文件夹需要 所有 的子文件夹也共享。例如,D:\Shares[=31=]_Users下的每个文件夹也需要共享。

我有一个命令可以共享当前目录中的所有文件,但不共享其他目录中的文件 - 这意味着我需要在共享中保留 BAT 的副本,这不是一个好主意。有没有一种方法可以自动执行此操作,以便 BAT 文件共享另一个文件夹中的每个子文件夹?

这是我当前的代码:

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

我 运行 遇到的问题是“%%G=%%G” - 我想用文件夹的名称而不是整个路径替换参数的第一部分。

理想情况下,这将共享 "D:\Shares[=29=]_Users\JSmith" 作为名为 "JSmith"

的共享

感谢您的帮助!

只需使用 FOR 变量中可用的基本名称和扩展名,如下所示:"%%G=%%~nG%%~xG"

固定代码:

NET SHARE "NameOfShare=D:\Shares" /GRANT:Everyone,FULL /CACHE:None
FOR /D %%G IN (D:\Shares[=10=]_Users\*.*) DO NET SHARE "%%~nG%%~xG=%%G" /GRANT:Everyone,FULL /CACHE:None 

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