批处理脚本 - 在文本文件中搜索值并在其旁边复制单词

时间:2015-05-01 09:31:03

标签: string batch-file cmd

目前正在编写一个批处理程序,但我似乎很难用字符串操作。我需要帮助扫描下面的Output.txt文件的内容,搜索单词ssudmdm。无论在何处找到单词,我都需要在同一行上检索com值,在右侧并将其存储在变量中。 我知道网站上有一些例子,但我已经尝试过实施它们而没有运气。任何帮助将不胜感激。

代码:--------------------------------------------- -

@ECHO OFF

:: Use local environment copy
SETLOCAL
::regedit.exe /S VM_Putty_Settings.reg

:while1

reg QUERY "HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM" > Output.txt

@start /wait FIND /C /I "ssudmdm" Output.txt

if %ERRORLEVEL% == 1 (  
    timeout /t 2 >nul
    goto :while1
    )


for /f "tokens=3" %%a in ('find /i "ssudmdm" output.txt') do set var=%%a

reg add "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\VM_Putty_Settings" /V SerialLine /T REG_SZ /D "%var%" /F

pause
start Putty.exe -load VM_Putty_Settings < nul >NUL 2>NUL


ENDLOCAL
GOTO:EOF

输出文件----------------------------------

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
    \Device\Serial0    REG_SZ    COM1
    \Device\Serial1    REG_SZ    COM2
    \Device\ssudserd0000    REG_SZ    COM5
    \Device\ssudserd0001    REG_SZ    COM6
    \Device\ssudmdm0000    REG_SZ    COM7

1 个答案:

答案 0 :(得分:1)

以下是如何在没有中间文件的情况下在一个语句中完成所有操作。

for /f "skip=2 tokens=3" %%a in ('reg query hklm\hardware\devicemap\serialcomm /v *ssudmdm* ^| find /i /v "end of search"') do set var=%%a

如果您出于某种原因必须拥有中间文件:

for /f "tokens=3" %%a in ('find /i "ssudmdm" output.txt') do set var=%%a