windows - 捕获命令的结果以供以后使用
问题描述
我正在运行一个批处理脚本并将信息输出到临时文件夹中的一个文件中,(只是为了学习)。
我有一个输入供用户选择他们希望从哪个映射驱动器中传输数据。
这就是我所拥有的,它非常简单,所以我可以学习然后稍后修改。
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
保存的,所以我可以把它放在传输脚本中。
解决方案
正如 Compo 已经评论的那样,wmic
是一种比net use
(主要是因为您不能依赖一致的令牌计数 *)更好的方法,这使得使用for
循环处理变得困难。Wmic
比 慢一点net use
,但好处是值得浪费时间。
@echo off
setlocal
set "M=Q:"
for /f "delims=" %%a in ('wmic netuse where LocalName^="%M%" get RemoteName^,Status /value ^|find "=" ') do set "%%a"
echo your drive is %RemoteName% and it's Status is %Status%.
要列出您的网络驱动器,您还可以使用:
wmic netuse where LocalName="Q:" get localname,remotename,status
*) net use
取决于语言,英语中的“Unavailable”(一个标记)在德语中是“Nicht verfgb”(两个标记)。
即使在同一种语言中,您也不能依赖:(德语示例):“Verbunden”(一个标记)与“Nicht verfgb”(两个标记)
推荐阅读
- java - Swagger codegen 服务器端工作流程
- reactjs - 并非所有的触摸事件都在 array.map react 中触发
- python - Django/Python 'int' 对象不可下标
- windows - NASM 64 中 Windows API 中的 CreateFileA:参数不正确,但哪个参数?
- reactjs - 如何以样式在快照中的方式从使用材质 ui 样式创建的组件中进行快照
- android - 使用 setOnClickListener 并获取“潜在 NullPointerException。某些布局版本中缺少资源
- java - JDK术语解释
- java - Java 中的 Apache-POI 不返回计算的单元格值
- rust - 在 for 循环中推送到 Vec 时,新成员如何持续存在?
- c++ - OpenCV C++ 跟踪 API