@echo off
setlocal enableextensions disabledelayedexpansion
>"fud_india.com_%computername%.txt" 2>nul (
for /f "delims=: tokens=1,*" %%a in ('fsutil fsinfo drives') do (
for %%c in (%%b) do vol %%~dc && dir /s /d "%%~dc\hurrdurr.txt"
)
)
的for /f
只是处理线,在这种情况下,fsutil
命令的输出,并且能够在使用所指示的组定界符令牌那些行拆分。作为一个行fsutil
回报所有驱动器,像
Drives: C:\ D:\ E:\
和不知道许多驱动器怎么可以在路线,我们不能(或多或少)表示,我们将有多少令牌希望。因此,我们需要获得该行,分开标题,获取列表并遍历列表中的元素(驱动器)
第一步是将标题与驱动器列表分开。这通过tokens
和delims
条款直接在for /f %%a
中完成。我们将使用冒号作为分隔符来分隔标记中的行。
我们要求两个标记:疗法第一令牌(%%a
)将存储文本到第一个分隔符(头)和第二令牌(%%b
)将存储行的其余部分(这是什么*
手段在令牌子句中)
通过存储在%%b
中的驱动器列表,我们需要一种方法来遍历它。这是for %%c in (%%b) ...
的原因。当%%b
膨胀时,所产生的命令将是
for %%c in (C:\ D:\ E:\) do ...
对于vol
命令用于确定驱动器可用并且如果没有错误级别被设置,则执行该命令dir
列表中的每个元素。
作为vol
命令只接受驱动器的参考,没有路径,我们需要删除从该列表中的元素的结束反斜杠,所以,而不是直接使用%%c
,我们使用%%~dc
,即,元件的驱动在%%c
中被引用。
完整的for
循环放在括号中并重定向,因此输出文件只需要打开/关闭一次。
是否需要批处理脚本?如果你可以使用[PowerShell](https://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx),情况会更容易。见例如[获取-PSDrive来](https://technet.microsoft.com/en-us/library/hh849796.aspx)。 –
我们坚持批处理,因为我们还不熟悉PowerShell。 – bapa