Cmd 如何读取net use生成的文本文件并使用net use命令重新映射网络驱动器

Cmd 如何读取net use生成的文本文件并使用net use命令重新映射网络驱动器,cmd,network-drive,net-use,Cmd,Network Drive,Net Use,如何读取net use生成的文本文件名为network_drive.txt,由当前机器映射的网络驱动器组成,如下图所示: 新的连接将被记住 Status --- Local --- Remote ------------------ Network ------------------------------------------------------------------------------- OK ---------- H:

如何读取net use生成的文本文件名为network_drive.txt,由当前机器映射的网络驱动器组成,如下图所示:

新的连接将被记住

Status ---      Local ---       Remote ------------------     Network

-------------------------------------------------------------------------------
OK ----------           H:   ----     \\server\users\john -----
                                                Microsoft Windows Network

OK ----------          Y:    ----     \\server\e$\ --------------
                                                Microsoft Windows Network
命令已成功完成

如何读取上面的文件以使用相同的字母路径和路径再次映射网络驱动器(仅当状态为ok并忽略不可用的文件时)

更新

@echo off
set drive=\\server\users\john\
net use > %drive%\%USERNAME%_temp_Networkdrive.txt   <-- generating net use file

for /f "skip=6 delims=*" %%a in (%drive%\%USERNAME%_temp_Networkdrive.txt) do (
echo %%a >>%drive%\%USERNAME%_del_Networkdrive.txt )   <-- deleting the first 6 lines

xcopy %drive%\%USERNAME%_del_Networkdrive.txt %drive%\%USERNAME%_Networkdrive.txt /y <-- make a new copy of the network drive file after deleting the lines
findstr /v "The command completed successfully." %drive%\%USERNAME%_del_Networkdrive.txt > %drive%\%USERNAME%_Networkdrive.txt <-- find the string and delete them and make a new copy of file with just the network drives

del %drive%\%USERNAME%_del_Networkdrive.txt /f /q
del %drive%\%USERNAME%_temp_Networkdrive.txt /f /q
for /f "tokens=2,3,4" %%a in (%drive%\%USERNAME%_Networkdrive.txt) do ( net use %%a %%b ) **<-- find the letter path and the drive path and map accordingly.**
@echo关闭
设置驱动器=\\server\users\john\
net使用>%drive%\%USERNAME%\u temp\u Networkdrive.txt>%drive%\%USERNAME%\u del\u Networkdrive.txt)
这应该是你想要的

根据您的情况,您应该将
类型q20294868.txt
替换为
网络使用
q20294868.txt
只是我用来保存测试数据的一个文件

这里有两种不同的方法。首先过滤包含
\
的行的文本,然后过滤那些
/b
开头的
“OK”

我不确定网络名称是否可能包含在数据线上,而不是单独包含在数据线上,因此我设计了第二种方法。第一个更简单,第二个更健壮

请注意,您的原始
findstr
将删除任何包含引号中单个单词的行-有关详细信息,请参见提示符中的
findstr/?


当然,生成的
NET USE
命令只是
ECHO
发送到屏幕,而不是执行。

我知道我可以使用for循环删除行,并使用令牌(2和3)获取信息。但是,由于标记的原因,也包含了一些无用的信息。
@ECHO OFF
SETLOCAL

FOR /f "tokens=2*delims=: " %%a IN ('type q20294868.txt^|find "\"^|findstr /b "OK"') DO ECHO NET use %%a: %%b
ECHO(======================
FOR /f "tokens=2*delims=: " %%a IN ('type q20294868.txt^|find "\"^|findstr /b "OK"'') DO FOR /f %%c IN ("%%b") DO ECHO NET use %%a: %%c
GOTO :eof