批处理脚本 - 在文本文件中搜索值并复制旁边的单词
Batch Scripting - Search for value in text file and copy word next to it
目前正在编写一个批处理程序,但我似乎在字符串操作方面遇到了困难。我需要帮助扫描下面 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
以下是如何在没有中间文件的情况下在一条语句中完成所有操作。
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
目前正在编写一个批处理程序,但我似乎在字符串操作方面遇到了困难。我需要帮助扫描下面 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
以下是如何在没有中间文件的情况下在一条语句中完成所有操作。
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