【发布时间】:2020-10-12 19:05:17
【问题描述】:
我正在运行一个批处理脚本并将信息输出到临时文件夹中的一个文件中,(只是为了学习)。
我有一个输入供用户选择他们希望从哪个映射驱动器中传输数据。
这是我所拥有的,它非常简单,所以我可以学习然后修改。
Cls
@ECHO Off
Net use > c:\Temp\Map.txt
Net Use
Pause
:Start
ECHO Which Drive letter do you want to back up?
ECHO ? - Enter Drive letter
ECHO E - Exit
SET /P M=Make Choice then press ENTER:
IF %M%==E Exit Else goto :here
If %M%==e Exit Else goto :here
:Here
Echo %M%
Findstr "OK %M%:" c:\Temp\Map.txt
pause
我需要提取他们选择的驱动器的路径名。就像如果有 5 个驱动器,并且他们想要备份驱动器 S:,输出是:
OK S: \\10.X.X.X\Deployment\David\Davids_Scripts\bats
我需要保存 \\10.52.8.1\Deployment\David\Davids_Scripts\bats,以便将其放入传输脚本中。
【问题讨论】:
-
好吧,对于 unix 系统,我会使用“sed”命令。不知道微软。
-
我建议您在for-loop、
%SystemRoot%\System32\wbem\WMIC.exe" Path Win32_MappedLogicalDisk Get DeviceID,ProviderPath中使用此命令,而不是使用net use,并捕获其输出。它也应该在它们各自的网络路径旁边列出所有映射的驱动器号。 -
(
if的一些小改进:使用/i开关进行不区分大小写的比较,引用双方以避免空输入的语法错误:if /i "%M%" == "E" goto :eof)
标签: windows batch-file variables