我有一个文件服务器,上面有多个文件夹需要共享。偶尔,股票消失,需要重新分享(超出了这个问题的范围,我将其作为一个单独的问题处理)。目前,我正在寻找一种方法,以便在发生这种情况时通过单个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”的共享
感谢您的帮助!
答案 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