我有一个看起来像这样的源文件:
Name SerialNumber
\\.\PHYSICALDRIVE1 000000002027612
\\.\PHYSICALDRIVE0 000000002027476
\\.\PHYSICALDRIVE2 00000000202746E
\\.\PHYSICALDRIVE3 00000000202760E
在dos中使用FOR循环我需要能够解析出与稍后在bat文件中使用的每个PHYSICALDRIVE条目相关联的数字。例如:1,0,2和3)
从我收集的内容中,delims =一次只查看一个字符。 因为我不能说delims = PHYSICALDRIVE 并将它视为单个分隔符。 任何人都可以举例说明如何只解析字符串末尾的数字吗?
如果重要,则使用延迟扩展。
感谢。
答案 0 :(得分:1)
我认为任何解决方案都需要首先解析出完整列值,然后使用SET搜索和替换或子字符串来解析最后的数字。
我假设Name列值永远不会有空格。因此,默认的FOR / F分隔符将足够容易地解析第一列。
如果驱动器号始终小于10,则
for /f %%A in (yourFileName.txt) do (
set "drive=%%A"
set "drive=!drive:~-1!"
echo !drive!
)
否则,如果它可以是10或更大,那么
for /f %%A in (yourFileName.txt) do (
set "drive=%%~A"
set "drive=!drive:*physicaldrive=!"
echo !drive!
)