windows bat系列10:批量设置&取消共享目录

1. 背景

在使用Windows过程中,经常要设置共享目录,用完之后,又要取消共享目录,如果只设置一次还好(直接右键—共享),但若有多个固定的目录需要设置再取消,单个单个的设置就会很low,因而思考更快捷的解决方案:使用DOS脚本。

2. dos命令

windows下网络共享主要是用net命令实现,其有多个子命令,如:

Command

Sub-command

annotation

菜鸟翻译

例子

Net

View

NET VIEW displays a list of resources being shared on a computer. When used without options, it displays a list of computers in the current domain or network.

  1. 查看共享资源;
  2. 查看当前域(网络)PC数量

Net view—查看域中PC数量

Share

NET SHARE makes a server's resources available to network users.

目录共享

D:\myself\windows_script>net share help="D:\myself\windows_script\help" /grant:everyone,full

共享我的help文件,用户为everyone,权限为full(可读//修改),其中help共享名

net share help delete --停止刚才的help共享

Stop

NET STOP stops Windows services.

停止windows服务

Net stop

Start

NET START lists running services.

启动或查看已经启动的windows服务

Net start

 

 

 

3. 脚本化

@echo off
Rem close echo
 
Rem chane active page
chcp 437 >nul
Rem delay expansion
setlocal enabledelayedexpansion
 
Rem set parameters
set TESTLIST=D:\myself\windows_script\bat_out;D:\myself\windows_script\bat_test;D:\myself\windows_script\testnull;
set TMPLIST=%TESTLIST%
 
Rem print title

echo=
echo=
echo ---------------------------%date% %time:~0,8%---------------------------
 
set /a NUM = 1
:loop
for /f "tokens=1* delims=;" %%a in ("%TMPLIST%") do (
	
	Rem set local parameters
	echo #!NUM! is %%a
	
	Rem share_the_dir
	for %%h in ("%%a") do (
		net share %%~nh="%%a" /GRANT:everyone,FULL
	)
 
	Rem recursion
	set TMPLIST=%%b
)
if defined TMPLIST goto :loop
 
Rem 
echo=
echo=
 
endlocal

pause

4. 脚本分析

  1. 变量TESTLIST保存着待共享的路径(以分号分割,最后一个路径也要加分号“;”),后续生产可以设置;
  2. 采用for循环递归分割TESTLIST,抽取各个路径
  3. 在各个路径中取最后的目录名(内部for语句)---这里用到扩展变量
  4. 根据抽取的目录名和之前的路径调用net share进行共享;
  5. OK---全部搞定

5. 测试结果

猜你喜欢

转载自blog.csdn.net/zhaogang1993/article/details/81164881