标题: [文本处理] 【已解决】批处理怎么查A文本中的文本是否在B文本中 [打印本页]
作者: hentai87 时间: 2020-6-4 17:27 标题: 【已解决】批处理怎么查A文本中的文本是否在B文本中
本帖最后由 hentai87 于 2020-6-4 20:11 编辑
Remove.txt 中的文本不在Packages.txt,
则不执行for /f %%i in ('findstr /i . Remove.txt 2^>nul') do %dism% /NoRestart /image:%MT% /Remove-package /Packagename:"%%i"
代码已标出有问题部分
pushd "%~dp0"
::-------------设置win路径和dism路径
for /f "delims=:" %%a in ('findstr /n msmg设置 ..\set.txt') do set n=%%a
for /f "skip=%n% delims=" %%b in (..\set.txt) do (
set MT=%%b\Mount\Install
set dism=%%b\Bin\x64\DISM10\dism.exe
)
::-------------加载卸载注册表
:SETR
echo.
echo 载入注册表
reg load HKLM\SOFT "%MT%\Windows\System32\config\software"
for /f %%i in ('findstr /i . Remove.txt 2^>nul') do ( call :SETVALUE %%i )
echo.
echo 卸载注册表完成
reg unload HKLM\SOFT
::-------------卸载系统包( 有疑问的部分 )
dir /b %MT%\Windows\servicing\Packages\*.mum >Packages.txt
for /f %%i in ('findstr /i . Remove.txt 2^>nul') do %dism% /NoRestart /image:%MT% /Remove-package /Packagename:"%%i"
pause
exit
::-------------修改注册表
:SETVALUE
echo.
echo 修改Visibility
reg add "HKLM\SOFT\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\%~1" /v Visibility /t REG_DWORD /d 1 /f
echo.
echo 删除Owners
reg delete "HKLM\SOFT\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\%~1\Owners" /f
goto:eof[/code]
作者: hentai87 时间: 2020-6-4 18:55
本帖最后由 hentai87 于 2020-6-4 19:01 编辑
自己写了个, 没成功
果然这种又要查又要执行N次的代码不知道其逻辑关系
dir /b %MT%\Windows\servicing\Packages\*.mum >ackages.txt
for /f "delims=" %%i in ('findstr /gackages.txt /x Remove.txt 2^>nul') do (
for /f %%i in ('findstr /i . Remove.txt 2^>nul') do %dism% /NoRestart /image:%MT% /Remove-package /Packagename:"%%i"
)
因为要执行几百次,所以想加个判断,免去不必要的执行
不知道省去生成Packages.txt,会不会更加再快一点
作者: flashercs 时间: 2020-6-4 19:19
回复 2# hentai87
是判断packages 在remove中还是反过来?
作者: hentai87 时间: 2020-6-4 19:24
回复 3# flashercs
判断remove在packages中
作者: flashercs 时间: 2020-6-4 19:28
回复 4# hentai87 - for /f "delims=" %%i in (Remove.txt) do (
- if exist "%MT%\Windows\servicing\Packages\%%i" %dism% /NoRestart /image:%MT% /Remove-package /Packagename:"%%i"
- )
复制代码
这样判断是否更简单?
作者: hentai87 时间: 2020-6-4 19:34
回复 5# flashercs
dir /b %%b\Mount\Install\Windows\servicing\Packages\*.mum >1_Get_Full_Packages.txt
Packages.txt含有.mum的多余后缀
另一个bat的这行怎么改,也要用
你的代码不知道含不含.mum,我测试了失败了
作者: flashercs 时间: 2020-6-4 19:38
本帖最后由 flashercs 于 2020-6-4 19:40 编辑
回复 6# hentai87 - for /f "delims=" %%i in ('dir /b "%MT%\Windows\servicing\Packages\*.mum"^|findstr /ixg:Remove.txt 2^>nul') do (
- %dism% /NoRestart /image:%MT% /Remove-package /Packagename:"%%i"
- )
复制代码
Remove.txt的格式是什么?
a.mum
b.mum
...
作者: hentai87 时间: 2020-6-4 19:48
本帖最后由 hentai87 于 2020-6-4 19:51 编辑
dir /b %%b\Mount\Install\Windows\servicing\Packages\*.mum >1_Get_Full_Packages.txt
是完整的全部代码,我也想知道,直接不含.mum直接导出的办法
dir /b "%MT%\Windows\servicing\Packages\*.mum"^|findstr /ixg:Remove.txt 2^>nul
失败了
Invalid switch - "ixg:Remove.txt".
Press any key to continue . . .
作者: hentai87 时间: 2020-6-4 19:49
回复 7# flashercs
Remove.txt
Windows-Defender-Nis-Group-Package~31bf3856ad364e35~amd64~~10.0.19640.1
Windows-Defender-Management-Powershell-Group-Package~31bf3856ad364e35~amd64~~10.0.19640.1
Windows-Defender-Management-MDM-Group-Package~31bf3856ad364e35~amd64~~10.0.19640.1
Packages.txt
Windows-Defender-Management-Powershell-Group-Package~31bf3856ad364e35~amd64~~10.0.19640.1.mum
Windows-Defender-Management-MDM-Group-Package~31bf3856ad364e35~amd64~~10.0.19640.1.mum
WindowsSearchEngineSKU-Group-Package~31bf3856ad364e35~amd64~en-US~10.0.19640.1.mum
判断remove在packages中,但是packages本身有.mum多余后缀
作者: hentai87 时间: 2020-6-4 19:55
回复 7# flashercs
dism XXX Windows-Defender-amd64~~10.0.19640.1.mum
含有.mum会提示无效包,所以不能有.mum
作者: flashercs 时间: 2020-6-4 19:59
回复 9# hentai87 - for /f "delims=" %%i in (Remove.txt) do (
- if exist "%MT%\Windows\servicing\Packages\%%i.mum" %dism% /NoRestart /image:%MT% /Remove-package /Packagename:"%%i"
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |