创建批处理文件,创建另一个批处理文件并根据其他文件内容对其进行修改

时间:2018-03-07 18:11:30

标签: file batch-file mapping

对于这个可怕的标题感到抱歉,希望尽可能多地包含这些信息。

目前我们在从Windows 7迁移到Windows 10时遇到了一些麻烦。目前我们没有在Windows 10中使用任何漫游配置文件,但在每次注销后,它会将mapped_drives.txt文件保存到网络驱动器中供参考。

目前它包含类似这样的内容

F:,\\CHHFSV01\CORPSEC
G:,\\CHHFSV01\LAWDATA
O:,\\CEPFALI11\OCCAPPS
T:,\\CEPGCL131\APPS

我想创建一个批处理文件,该文件将读取同一目录中的mapped_drives.txt文件,并创建一个新的mappings.bat文件,该文件将获取mapped_drives.txt文件中的信息,并基本上输出一个批处理文件如果像下面那样运行映射驱动器。

NET USE F: /D
NET USE G: /D
NET USE O: /D
NET USE T: /D

NET USE F: \\CHHFSV01\CORPSEC /P:Y
NET USE G: \\CHHFSV01\LAWDATA /P:Y
NET USE O: \\CEPFALI11\OCCAPPS /P:Y
NET USE T: \\CEPGCL131\APPS /P:Y

我搜索过,无法真正了解我是如何做到这一点的,或者甚至是可能的。你这些家伙/女孩的想法显然比我聪明得多吗?

2 个答案:

答案 0 :(得分:0)

您可以使用以下简单的方法进行管理:

@For /F "UseBackQ Tokens=1* Delims=," %%A In ("mapped_drives.txt"
) Do @Net Use %%A /D && @Net Use %%A %%B /P:Y

运行时,(可能在登录时),它应该读取mapped_drives.txt删除这些驱动器号的任何现有映射,并创建在文本文件中定义的映射。

修改

针对评论中提到的方案尝试此修改:

@Echo Off
(   Echo=@Echo Off
    For /F "UseBackQ Delims=," %%A In ("mapped_drives.txt"
    ) Do Echo=Net Use %%A /D
    Echo=
    For /F "UseBackQ Tokens=1* Delims=," %%B In ("mapped_drives.txt"
    ) Do Echo=Net Use %%B %%C /P:Y
)>"NewMappings.cmd"

这应创建一个与您问题中提到的匹配的NewMappings.cmd批处理文件。

答案 1 :(得分:0)

我不确定为什么你需要创建另一个批处理文件,因为你可以简单地使用一个,但是根据你的要求,这应该检查驱动器号,如果存在,它将编写删除映射函数并创建将驱动器的功能映射到新的批处理文件,但显然,它只会在存在的情况下创建它。

@echo off
for /F "tokens=1,2 delims=," %%a in (mapped_drives.txt) do (
   if exist %%a echo net use %%a /d
   echo net use %%a %%b /P:Y
) > %~dp0map_now.cmd

如果你想删除它,如果存在,即使它存在也要创建它,那么这应该这样做。

@echo off
for /F "tokens=1,2 delims=," %%a in (mapped_drives.txt) do (
   if exist %%a (
   echo net use %%a /d
  )
   echo net use %%a %%b /P:Y
) > %~dp0map_now.cmd