如何读取net use生成的文本文件,我们将其称为network_drive.txt,它包含当前机器映射的网络驱动器,如下图所示:
将记住新的连接。
Status --- Local --- Remote ------------------ Network
-------------------------------------------------------------------------------
OK ---------- H: ---- \\server\users\john -----
Microsoft Windows Network
OK ---------- Y: ---- \\server\e$\ --------------
Microsoft Windows Network
命令成功完成。
如果状态正常并忽略不可用的文件,如何读取上面的文件以使用相同的Letter路径和路径再次映射网络驱动器?
更新!
@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.**
然而.. 在某些情况下,有时“Microsoft Windows网络”与字母和云端硬盘路径位于同一行,因此会删除记录/行。
有人可以帮忙吗?
更新
我从findstr行中删除了Microsoft Windows Network,因为for循环中的标记只会获取net use命令的第二个和第三个字符串。
我已经测试了它并且它有效。
此外,最好在第二行使用if exists命令,以便在运行其他命令之前查看文件是否存在。
答案 0 :(得分:0)
@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
这应该做你想要的。
对于您的情况,您应该将type q20294868.txt
替换为net use
。 q20294868.txt
只是我用来保存测试数据的文件。
这里有两种不同的方法。对于包含\
的行,然后对于/b
开始"OK"
我不确定网络名称是否可能包含在数据行而不是单独一行,因此我设计了第二种方法。第一个更简单,第二个更健壮。
请注意,您的原始findstr
会删除包含引号中包含的单个字词 ANY 的所有行 - 请参阅提示中的findstr /?
以获取更多信息。
当然,结果NET USE
命令仅仅ECHO
显示在屏幕上,而不是执行。