可以实时读取和处理自己的输出的批处理文件?

时间:2017-06-05 13:24:44

标签: batch-file

我有一个运行python脚本的批处理文件。完成后的python脚本发送如下所示的数字: 我需要我的批处理文件在运行时读取自己的输出然后使用它(下图中显示的数字3进行一些处理 批次可以实现吗?

batch file output 为澄清而编辑:

enter image description here

我想要一个使用“net use”命令的脚本。 此特定命令的输出如下所示...将打印到运行脚本的cmd窗口中!现在我希望我的脚本读取此输出..就像在已映射的驱动器列表中找到某个地址一样,它会做一些事情......比如取消映射驱动器

1 个答案:

答案 0 :(得分:0)

我不太清楚你的目的是什么,python要捕获net use命令输出需要做什么?

根据经验,要捕获任何命令输出,您必须使用for循环(即此处使用powershell

捕获剪贴板内容
rem get clipboard content into variable
set "psCmd=powershell -Command "add-type -an system.windows.forms; [System.Windows.Forms.Clipboard]::GetText()""
for /F "usebackq delims=" %%# in (`%psCmd%`) do set "clipContent=%%#"

因此,为了获取net use

的输出
@echo off
for /f "skip=6 tokens=2,3" %%a in ('net use') do (
  echo/%%a | find ":">NUL && echo/Drive letter %%a - Remote name %%b
)
exit/B

但是,我建议您最好使用wmic(以下两个相似)

@echo off
for /f "useback skip=1 tokens=1,2" %%a in (`"wmic path Win32_LogicalDisk Where DriveType="4" get DeviceID, ProviderName"`) do (
  echo/%%a | find ":">NUL && echo/Drive letter %%a - Remote name %%b
)
exit/B

@echo off
for /f "useback skip=1 tokens=1,2" %%a in (`"wmic path Win32_MappedLogicalDisk get DeviceID, ProviderName"`) do (
  echo/%%a | find ":">NUL && echo/Drive letter %%a - Remote name %%b
)
exit/B

因为,您可以将/node:"some_other_computer_name"开关添加到wmic,并可以从网络上的任何计算机列出映射的驱动器,即

@echo off
for /f "useback skip=1 tokens=1,2" %%a in (`"wmic /node:"hp-ml110" path Win32_MappedLogicalDisk Where DriveType="4" get DeviceID, ProviderName"`) do (
  echo/%%a | find ":">NUL && echo/Drive letter %%a - Remote name %%b
)
exit/B

希望它有所帮助。