标题: [文本处理] [已解决]批处理如何将文本中指定特征的行分别与其下多行字符串合并 [打印本页]
作者: batpro 时间: 2011-7-6 09:52 标题: [已解决]批处理如何将文本中指定特征的行分别与其下多行字符串合并
本帖最后由 pcl_test 于 2016-8-9 23:35 编辑
这样处理文本:补充完整路径
在1.txt中有- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
- →\SigmatelSysTrayApp
- →\UIUCU
- →\KAV50
- →\FIPExpert
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- →\DAEMON Tools-1033
- →\yassistse
- →\YLive.exe
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
- →\config.exe
复制代码
如何生成
2.txt:-
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run→\SigmatelSysTrayApp
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run→\UIUCU
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run→\KAV50
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run→\FIPExpert
-
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run→\DAEMON Tools-1033
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run→\yassistse
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run→\YLive.exe
-
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run→\config.exe
-
复制代码
说明:手工操作过程是:先剪切→\归属的注册表路径,在复制到各自对应的下方
作者: wolonga123 时间: 2011-7-6 10:33
1# batpro - @echo off
- SetLocal EnableDelayedExpansion
- For /F "tokens=*" %%i IN (test.txt) Do (
- set "str=%%i"
- if "!str:~,1!" equ "→" (
- if defined var (echo !var!&echo %%i) ELSE echo %%i
- ) else set var=%%i
- )
- pause
复制代码
作者: CrLf 时间: 2011-7-6 10:41
借用 terse 的代码:- @Echo Off&SetLocal EnableDelayedExpansion
- (For /F "tokens=*" %%i IN (1.txt) Do (
- set "str=%%i"
- if "!str:~1,1!" equ "\" (
- if defined var echo; & set<nul /p=!var! & set var=
- set /p"=%%i"<nul
- ) else set var=!str!
- ))>2.txt
- pause
复制代码
作者: batpro 时间: 2011-7-6 11:08
3# zm900612
不符合题意
作者: CrLf 时间: 2011-7-6 11:16
4# batpro
搞错了...那样更简单的了:- @Echo Off&SetLocal EnableDelayedExpansion
- (For /F "tokens=*" %%i IN (1.txt) Do (
- if "%%~pi"=="%~p0→\" (
- echo !var!%%i
- ) else set var=%%i
- ))>2.txt
- pause
复制代码
作者: batpro 时间: 2011-7-6 11:21
2# wolonga123
谢谢提醒,用你的代码,我自己写了个:- @echo off
- cd.>temp_1.txt
- SetLocal EnableDelayedExpansion
- For /F "tokens=*" %%i IN (1.txt) Do (
- set "str=%%i"
- if "!str:~,1!" equ "→" (
- if defined var (echo !var!&echo %%i) ELSE echo %%i
- ) else set var=%%i
- )>>temp_1.txt
- @echo off>temp_2.txt&set n=1
- FOR /f "delims=" %%1 in (temp_1.txt) do (
- 2>nul set /a n+=1,f=n%%2,1/f&&echo,%%1||set/p=%%1<nul
- ) >>temp_2.txt
- cd.>2.txt
- for /f "tokens=*" %%i in (temp_2.txt) do echo,%%i>>2.txt
复制代码
目前的问题是怎么去除“Run” 与 “→\”前的空格
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run →\SigmatelSysTrayApp
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run →\UIUCU
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run →\KAV50
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run →\FIPExpert
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run →\DAEMON Tools-1033
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run →\yassistse
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run →\YLive.exe
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run→\config.exe
作者: batpro 时间: 2011-7-6 11:23
5# zm900612
恩,好代码,但是怎么,去除空格呢
作者: CrLf 时间: 2011-7-6 11:24
6# batpro
那个空格是 1.txt 中自带的...
如果空格固定为三个,可以把 !var! 换成 !var:~,-3!
作者: batpro 时间: 2011-7-6 11:49
8# zm900612
谢谢版主,问题解决
另外问一句,假设不知道1.txt里面自动的空格是多少,有其他方法么?【因为处理文本时也可能因为各种原因出现这样的情况】
作者: CrLf 时间: 2011-7-6 12:00
- @Echo Off&SetLocal EnableDelayedExpansion
- (For /F "tokens=*" %%i IN (1.txt) Do (
- if "%%~pi"=="%~p0→\" (
- echo !var:%cd%\=!→\%%~nxi
- ) else set var=%%~fi
- ))>2.txt
- pause
复制代码
作者: mstsc 时间: 2011-7-6 13:24
好强大啊。for用的地方好多啊,一定要把for弄清楚怎么用
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |