无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5378|回复: 11
打印 上一主题 下一主题

{已解决}批处理如何搜索指定标签中间的行并运行

[复制链接]
跳转到指定楼层
1#
发表于 2016-12-5 09:58:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2011qx 于 2016-12-6 08:58 编辑

如何只是读取:123和:147中间的行并让他运行

行数不确定

:123
for %%b in (Run) do (reg query "\%%b" /f)
SCHTASKS /Change /DISABLE /TN "\GoogleUpdateTaskMachineUA"
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "%tmp%\1.reg"
:147

for /f "delims=" %%i in (2副本.bat) do if /i not "%%i"==":123"  if /i not "%%i"==":147"  (echo,%%i)
老搞不定,有高手帮忙吗? 谢谢


添加2个类似的(SET mrfwhf=goto fwbf2&goto 恢复系统默认服务)搞定
2#
发表于 2016-12-5 13:02:34 | 只看该作者
1.发现一个问题,楼主:123和:147用的中文的:号,而下面的命令用的英文的:号。
2.下面是我在win10下测试成功的代码,可以成功显示:123和:147之间的代码。
3.若要运行可以直接把:run下的echo改为call.
4.不过这样有缺陷,就是当:123和:147之间的代码与该文件的其它代码有联系时,无法正确运行。其实可以把2副本.bat追加到自身,然后调用call :123。
——————————————————————————————————————————
@echo off
SETLOCAL DISABLEDELAYEDEXPANSION

set isrun=flase

for /f "delims=" %%i in (2副本.bat) do (
if "%%i"==":147"  call set isrun=flase
call :run %%i
if "%%i"==":123"  call set isrun=true  
)


goto :EOF

:run
if true==%isrun% echo %1
________________________________________________________________________
回复

使用道具 举报

3#
 楼主| 发表于 2016-12-5 16:58:15 | 只看该作者
我试试谢谢,
回复

使用道具 举报

4#
 楼主| 发表于 2016-12-5 17:02:16 | 只看该作者
我这样在做的原因其实就想省点代码,我做的批处理 里面 有一个 选项是优化服务的,我想在优化前掉用前面恢复系统默认服务命令先运行,在运行优化的服务的命令,这样可以减少一点批处理的文件大小
回复

使用道具 举报

5#
 楼主| 发表于 2016-12-5 17:05:32 | 只看该作者
不知 发表于 2016-12-5 13:02
1.发现一个问题,楼主:123和:147用的中文的:号,而下面的命令用的英文的:号。
2.下面是我在win10下测试成 ...

我就是专门针对WIN10 14393 优化用的
回复

使用道具 举报

6#
 楼主| 发表于 2016-12-5 17:09:58 | 只看该作者
不知 发表于 2016-12-5 13:02
1.发现一个问题,楼主:123和:147用的中文的:号,而下面的命令用的英文的:号。
2.下面是我在win10下测试成 ...

C:\Users\Administrator\Desktop\WIN10优化>SETLOCAL DISABLEDELAYEDEXPANSION

C:\Users\Administrator\Desktop\WIN10优化>set isrun=flase

C:\Users\Administrator\Desktop\WIN10优化>for /F "delims=" %i in (2副本.bat) do (
if "%i" == ":147" call set isrun=flase
call :run %i
if "%i" == ":123" call set isrun=true
)

C:\Users\Administrator\Desktop\WIN10优化>(
if "@echo on" == ":147" call set isrun=flase
call :run @echo on
if "@echo on" == ":123" call set isrun=true
)

C:\Users\Administrator\Desktop\WIN10优化>if true == flase call @echo

C:\Users\Administrator\Desktop\WIN10优化>pause
请按任意键继续. . .
无效啊
回复

使用道具 举报

7#
 楼主| 发表于 2016-12-5 17:33:24 | 只看该作者
我的错不好意思,看可以了非常谢谢
回复

使用道具 举报

8#
 楼主| 发表于 2016-12-5 20:52:13 | 只看该作者
不知 发表于 2016-12-5 13:02
1.发现一个问题,楼主:123和:147用的中文的:号,而下面的命令用的英文的:号。
2.下面是我在win10下测试成 ...

确实如你所说,晚上回到家后式了下是不行,帮忙改下可以吗谢谢了
我附上大致内容,你看看
@ECHO on
@title %username%         W10_X64_14393_优化     ★使用有风险需谨慎★ 无名氏
%1 %2
ver|find "6.">nul&&exit /b
mshta vbscript:createobject("shell.application").shellexecute("""%~0""","goto :主菜单",,"runas",1)(window.close)&&exit /b
:主菜单
cls
pushd "%CD%"
CD /D "%~dp0"


:系统服务优化
cls
color 9F
ECHO.
call:colorIt 9c "         ★★★  警  告  ★★★                ★使用有风险需谨慎★"

ECHO   *                            ◆          ◆                            *
ECHO   *     W10添加图片查看器.5   ◆            ◆   E.系统服务备份/优化     *

ECHO.
SET youhua=
SET /P youhua="                             请输入选项,回车确认 "
IF NOT "%youhua%"=="" SET youhua=%youhua:~0,1%
if /i "%youhua%"=="E" goto 系统服务备份/优化



:系统服务备份/优化
cls&ECHO.
ECHO.
set fwbf=
set /p fwbf="          输入 Y 备份服务   输入 N 优化服务  建议 在优化前 先做备份 "
IF NOT "%fwbf%"=="" SET fwbf=%fwbf:~0,1%
if /i "%fwbf%"=="Y"  goto fwbf1
if /i "%fwbf%"=="N"  goto fwbf2
ECHO.&ECHO.
call:colorIt 9c "             !!! 汗…… 不会吧这也能选错?任意键返回重选吧 !!!"
pause>nul
goto :系统服务备份/优化
:fwbf1
cls&ECHO.
echo.
echo.             获得当前的日期和时间……   获取所有的服务名称……
echo.
for /f "tokens=1, 2, 3, 4 delims=-/. " %%j in ('Date /T') do set fuwu=备份_%%j_%%k_%%l_%%m
for /f "tokens=1, 2 delims=: " %%j in ('TIME /T') do set fuwu=%fuwu%_%%j_%%k.bat
sc query type= service state= all| findstr /r /C:"SERVICE_NAME:" >"%tmp%\fuwu1.txt"
echo                  正在备份服务到 %fuwu%
echo @echo Restore The Service Start State Saved At %TIME% %DATE% >"%fuwu%"
echo @pause >>"%fuwu%"
for /f "tokens=2 delims=:" %%j in (%tmp%\fuwu1.txt) do @( sc qc %%j |findstr  START_TYPE >%tmp%\fuwu2.txt &&  for /f "tokens=4 delims=:_ " %%s in (%tmp%\fuwu2.txt) do @echo sc config  %%j start= %%s >>"%fuwu%")
echo @pause >>"%fuwu%"
del /q "%tmp%\*.txt"
cls&ECHO.
echo   备份文件名: %fuwu% 位置:当前目录  按任意键返回
pause>nul
GOTO 系统服务优化
:fwbf2
cls&ECHO.

for /f "delims=" %%i in (Win10_批处理合集.bat) do (
if "%%i"==":147" call set isrun=flase
call :run %%i
if "%%i"==":123" call set isrun=true)
:run
if true==%isrun% call %1


for %%b in (2345PinyinSvc 2345SafeSvc 2345SoftSvc Protect_2345Explorer DPS FontCache iphlpsvc pcmastersvc QPCore QQPCRTP QQLiveService QQRepairFixSVC nvsvc icssvc HomeGroupListener HomeGroupProvider SysMain ShellHWDetection TrkWks Workstation) do (sc config   %%b start= DISABLED)

echo.
echo            服务优化 结束 (需要重新启动电脑才生效)  按任意键返回
pause >nul
GOTO 系统服务优化

:恢复系统默认服务
cls&ECHO.
ECHO.
ECHO                          开始恢复 系统默认服务 ...
ECHO.
:123
for %%b in (AppVClient NetTcpPortSharing RemoteAccess RemoteRegistry SCardSvr shpamsvc tzautoupdate UevAgentService) do (sc config   %%b start= DISABLED)
:147
cls&ECHO.
echo.
echo        恢复系统默认服务 结束 (需要重新启动电脑才生效)  按任意键返回
pause >nul
GOTO 系统服务优化





:重启
shutdown /r /f /t 0

:logoff
logoff

:end
exit

:colorIt
pushd %tmp%&(set /p=" "<nul>temp)
ren temp %2 >nul 2>nul
findstr -a:%1 . %2*
ren %2 temp >nul 2>nul
endlocal&popd

点评

首先,:run和其内的内容要放到文件末尾。for前的set isrun=flase不可少。 ----------------------------------------------------------------- 然后,其实你可以把Win10_批处理合集.bat中需要的内容复制过来。把  详情 回复 发表于 2016-12-5 21:30
回复

使用道具 举报

9#
发表于 2016-12-5 21:30:22 | 只看该作者
2011qx 发表于 2016-12-5 20:52
确实如你所说,晚上回到家后式了下是不行,帮忙改下可以吗谢谢了
我附上大致内容,你看看
@ECHO on

首先,:run和其内的内容要放到文件末尾。for前的set isrun=flase不可少。
-----------------------------------------------------------------
然后,其实你可以把Win10_批处理合集.bat中需要的内容复制过来。把我的批处理保存为run.bat,把for里的文件名改为Win10_批处理合集.bat,然后运行run.bat >> temp.txt。temp.txt里的内容就是:123与:147之间的内容。
回复

使用道具 举报

10#
 楼主| 发表于 2016-12-6 08:56:16 | 只看该作者
不知 发表于 2016-12-5 21:30
首先,:run和其内的内容要放到文件末尾。for前的set isrun=flase不可少。
---------------------------- ...

昨天晚上睡觉时想了个好方法,用SET指定变量再用GOTO跳转,早上来到公司搞定了,最简单的方法了应该是,谢谢

点评

应该是吧!直接call和goto都是最简单的方法了。  详情 回复 发表于 2016-12-6 08:58
回复

使用道具 举报

11#
发表于 2016-12-6 08:58:49 来自手机 | 只看该作者
2011qx 发表于 2016-12-6 08:56
昨天晚上睡觉时想了个好方法,用SET指定变量再用GOTO跳转,早上来到公司搞定了,最简单的方法了应该是, ...

应该是吧!直接call和goto都是最简单的方法了。
回复

使用道具 举报

12#
发表于 2017-1-11 21:09:00 | 只看该作者
大多数人想要改造这个世界,但却罕有人想改造自己。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 12:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表