[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理怎样全盘查找一个文件并用另外一个文件替换?

  1. @echo off
  2. mode con:cols=90 lines=6
  3. title  替换Windows 7 系统 的Winre.wim  开机按F8进入PE,前提是C盘要有Recovery文件夹下面有Winre.wim
  4. rem 搜索文件并安装
  5. set "FileName=Winre.wim"
  6. set "FileName1=boot.wim"
  7. echo 正在搜索,请稍候...
  8. for %%a in (C k j u z i  h g f e d ) do (
  9.     if exist %%a:\ (
  10.         for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  11.             if /i "%%~nxb" equ "%FileName%" (
  12.                 copy /y "%~dp0%FileName1%" "%%~dpb"Winre.wim /y
  13.             )
  14.         )
  15.     )
  16. )
复制代码
"%~dp0%FileName1%"这段命令是在同批处理同一目录下的boot.wim文件,而我想达到的目的是全盘下的boot.wim,找到一个就复制这一个

回复 23# idwma
测试了一下,不错,执行速度好像要快一点,


@echo off
rem 指定待搜索的文件
set "FileName=Winre.wim"
echo 正在搜索,请稍候...
for %%a in (C) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
                set "winre=%%b"
               attrib -s -a -h -r %%b
                goto :n
            )
        )
    )
)
:n
set "FileName=boot.wim"
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
                set "boot=%%b"
                goto :nn
            )
        )
    )
)
:nn
copy /y "%boot%" "%winre%"
attrib +s +a +h +r "%winre%"

TOP

@echo off
color 1f
mode con:cols=60 lines=10
title              替换Winre.wim  开机按F8进入PE
echo.
set "FileName=Winre.wim"
set "FileName1=boot.wim"
echo                  正在执行命令,请稍候......
for %%a in (C ) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
              
for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z ) do (
    if exist %%a:\ (
        for /f "delims=" %%j in ('dir /a-d /s /b "%%a:\*%FileName1%" 2^>nul') do (
            if /i "%%~nxj" equ "%FileName1%" (
           attrib -s -a -h -r "%%b"
           copy /y "%%j" "%%b" /z
          attrib +s +a +h +r "%%b"
            )
        )
    )
)
            )
        )
    )
)
找到Winre.wim后,因为是只读属性所以要先去掉属性才能复制,复制完后,再给它赋予只读属性,要不然它拒绝访问。到此这个问题已解决,谢谢大家的帮忙,谢谢!

TOP

回复 18# wlishihua

不知道哪儿错了,现在按这个运行成功
@echo off
set "FileName=Winre.wim"
set "FileName1=boot.wim"
echo     正在执行命令,请稍候...
for %%a in (C ) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
              
for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z ) do (
    if exist %%a:\ (
        for /f "delims=" %%j in ('dir /a-d /s /b "%%a:\*%FileName1%" 2^>nul') do (
            if /i "%%~nxj" equ "%FileName1%" (
               copy /y "%%j" "%%b" /z
            )
        )
    )
)
            )
        )
    )
)

TOP

回复 22# wlishihua

套在一起不能吗那像这样分开呢
  1. @echo off
  2. rem 指定待搜索的文件
  3. set "FileName=Winre.wim"
  4. echo 正在搜索,请稍候...
  5. for %%a in (C) do (
  6.     if exist %%a:\ (
  7.         for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  8.             if /i "%%~nxb" equ "%FileName%" (
  9.                 set "winre=%%b"
  10.                 goto :n
  11.             )
  12.         )
  13.     )
  14. )
  15. :n
  16. set "FileName=boot.wim"
  17. echo 正在搜索,请稍候...
  18. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  19.     if exist %%a:\ (
  20.         for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  21.             if /i "%%~nxb" equ "%FileName%" (
  22.                 set "boot=%%b"
  23.                 goto :nn
  24.             )
  25.         )
  26.     )
  27. )
  28. :nn
  29. copy /y "%boot%" "%winre%"
  30. pause
复制代码
1

评分人数

TOP

本帖最后由 wlishihua 于 2021-8-9 19:24 编辑

回复 21# Batcher
Win7的F8按键进入修复系统是没GUI界面的,那么,我想用PE文件 去替换它,开机按F8以PE的模式进入,备份恢复 系统
boot.wim与批处理文件 在同一目录已实现,但是在全盘达到 这个boot.wim文件去替换Winre.wim  不知道怎么写
知道这个文件 在C盘  只搜索C也行
@echo off
rem 指定待搜索的文件
set "FileName=Winre.wim"
echo 正在搜索,请稍候...
for %%a in (C ) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
                echo,%%b
            )
        )
    )
)
pause

TOP

在C盘找到Winre.wim这个文件,为何要写 for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) 呢?有什么特殊的原因吗
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 wlishihua 于 2021-8-9 19:14 编辑

回复 19# Batcher


    这个没问题
@echo off
rem 指定待搜索的文件
set "FileName=Winre.wim"
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
                echo,%%b
            )
        )
    )
)
pause
这个找到文件 后,再全盘搜索boot.wim 去改名以同名去替换它
这是WINDOWS10系统的代码,因为win10的文件夹是固定的(就是说每台机器都一样,而WIN7就不一样,没固定,所以有点难办
@echo off
color 1f
mode con:cols=60 lines=10
title              替换Winre.wim  开机按F8进入PE
echo.
echo                  正在执行命令,请稍候......
echo.

set "ff=boot.wim."
for %%i in (  k j u z i  h g f e d  )do (
  if exist %%i:\  (
     cd/d %%i:\
     set/p=%%i: <nul
     for /f  "delims=" %%j in ('dir/b/a-d/s "%ff%" 2^>nul')do (
        ping -n 3 127.1>nul
      if not exist C:\Recovery\WindowsRE\Winre.wim copy /y "%%j" C:\Recovery\WindowsRE\Winre.wim /y/z
)))

TOP

回复 18# wlishihua


1. 在C盘找到Winre.wim这个文件
这个功能你知道怎么实现了吗?要不你再参考这几个代码试试:
http://bbs.bathome.net/thread-3465-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

@echo off
mode con:cols=90 lines=6
title  替换Windows 7 系统 的Winre.wim  开机按F8进入PE
rem 搜索文件并安装
set "FileName=Winre.wim"
set "FileName1=boot.wim"
echo 正在搜索,请稍候...
for %%a in (C k j u z i  h g f e d ) do (
    if exist %%a:\ (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (

for %%i in (C k j u z i  h g f e d ) do (
    if exist %%i:\ (
        for /f "delims=" %%j in ('dir /a-d /s /b "%%a:\*%FileName1%" 2^>nul') do (
            if /i "%%~nxj" equ "%FileName1%" (
                copy /y "%%j" "%%b"
            )
        )
    )
)
            )
        )
    )
)

坛友写的,但是运行不了,搜索不到 文件

TOP

1. 在C盘找到Winre.wim这个文件
2. 在全盘搜索一个文件(boot.wim)
这两个功能你现在知道怎么写代码了?请发出来,我帮你补充最后一个功能:再用boot.wim改名去替换掉
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 15# Batcher

就是说,我要在C盘找到Winre.wim这个文件,就是不知道在什么文件夹下,但是这个文件夹有隐藏,只读属性,找到这个文件后,在全盘搜索一个文件(boot.wim)复制过去并改名,改为Winre.wim

先确定有这个文件Winre.wim  再用boot.wim改名去替换掉

TOP

回复 7# wlishihua


    这个代码实现的功能和3楼描述的需求有哪些差异吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 wlishihua 于 2021-8-9 17:56 编辑

回复 6# idwma

还是不行,第一个都没搜索到

TOP

多套一层?
  1. @echo off
  2. mode con:cols=90 lines=6
  3. title  替换Windows 7 系统 的Winre.wim  开机按F8进入PE,前提是C盘要有Recovery文件夹下面有Winre.wim
  4. rem 搜索文件并安装
  5. set "FileName=Winre.wim"
  6. set "FileName1=boot.wim"
  7. echo 正在搜索,请稍候...
  8. for %%a in (C k j u z i  h g f e d ) do (
  9.     if exist %%a:\ (
  10.         for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  11.             if /i "%%~nxb" equ "%FileName%" (
  12. for %%i in (C k j u z i  h g f e d ) do (
  13.     if exist %%i:\ (
  14.         for /f "delims=" %%j in ('dir /a-d /s /b "%%a:\*%FileName1%" 2^>nul') do (
  15.             if /i "%%~nxj" equ "%FileName1%" (
  16.                 copy /y "%%j" "%%b"
  17.             )
  18.         )
  19.     )
  20. )
  21.             )
  22.         )
  23.     )
  24. )
复制代码
1

评分人数

TOP

返回列表