找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 69309|回复: 25

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

[复制链接]
发表于 2021-8-9 07:25:50 | 显示全部楼层 |阅读模式
  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,找到一个就复制这一个
 楼主| 发表于 2021-8-7 18:42:18 | 显示全部楼层

【已解决】批处理怎样全盘查找一个文件并用另外一个文件替换?

本帖最后由 wlishihua 于 2021-8-10 04:41 编辑

全盘查找一个文件,找到后用另外一个文件替换
比如说,在电脑里有一个文件叫XXX.WIM,但不知道在哪个分区里。  找到 后我用另一个XXX.WIM 自动替换
而且这个文件带有只读、隐藏属性,就是说有 +s +a +h +r属性
贴上代码
@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"
            )
        )
    )
)
            )
        )
    )
)
发表于 2021-8-7 19:05:10 | 显示全部楼层
回复 1# wlishihua


试试哪个代码能找到:批处理全盘搜索指定文件获取其完整路径
http://bbs.bathome.net/thread-3465-1-1.html

评分

参与人数 1技术 +1 收起 理由
wlishihua + 1 谢谢!

查看全部评分

 楼主| 发表于 2021-8-7 19:35:22 | 显示全部楼层
这个能搜索到文件,但是搜索到 了要用批处理目录的同名文件替换搜索到 的文件,怎么继续?
@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
            )
        )
    )
)
发表于 2021-8-7 20:11:54 | 显示全部楼层
回复 3# wlishihua


echo,%%b
改成:
copy /y "%~dp0%FileName%" "%%~dpb"
 楼主| 发表于 2021-8-7 21:40:09 | 显示全部楼层
SetLocal EnableDelayedExpansion
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set var=%%i
set drive=!var:~-2!
fsutil fsinfo drivetype !drive!|find "固定">nul && for /f "delims=" %%a in ('dir/s/a-d/b !drive!\Winre.wim 2^>nul') do copy /y "Winre.wim" "%%~dpa")

已解决,但是不知道“固定”是啥意思
发表于 2021-8-7 21:49:01 | 显示全部楼层
本帖最后由 newswan 于 2021-8-7 21:51 编辑

固定驱动器,也就是硬盘
还有移动磁盘 网络磁盘 光盘等

评分

参与人数 1技术 +1 收起 理由
wlishihua + 1 谢谢

查看全部评分

 楼主| 发表于 2021-8-9 07:24:02 | 显示全部楼层
回复 4# Batcher
全部代码如下
@echo off
mode con:cols=90 lines=6
title  替换Windows 7 系统 的Winre.wim  开机按F8进入PE,前提是C盘要有Recovery文件夹下面有Winre.wim
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%" (
                copy /y "%~dp0%FileName1%" "%%~dpb"Winre.wim /y
            )
        )
    )
)

"%~dp0%FileName1%"这段命令是在同批处理同一目录下的boot.wim文件,而我想达到的目的是全盘下的boot.wim,找到一个就复制这一个
发表于 2021-8-9 09:11:10 | 显示全部楼层
踩!好吧,
 楼主| 发表于 2021-8-9 10:33:55 | 显示全部楼层
回复 2# sa5822054

不明白,睬是什么?
发表于 2021-8-9 13:08:11 | 显示全部楼层
本帖最后由 gcbgczhang 于 2021-8-9 13:09 编辑

你是要找到了改名?还是要用一个文件去替换内容?
 楼主| 发表于 2021-8-9 16:56:22 | 显示全部楼层
回复 4# gcbgczhang

找到 Winre.wim   再全盘查找boot.wim改名为Winre.wim  替换(Winre.wim)它
发表于 2021-8-9 17:08:50 | 显示全部楼层
多套一层?
  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技术 +1 收起 理由
wlishihua + 1 谢谢

查看全部评分

 楼主| 发表于 2021-8-9 17:28:14 | 显示全部楼层
本帖最后由 wlishihua 于 2021-8-9 17:56 编辑

回复 6# idwma

还是不行,第一个都没搜索到
发表于 2021-8-9 17:35:51 | 显示全部楼层
回复 7# wlishihua


    这个代码实现的功能和3楼描述的需求有哪些差异吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 21:09 , Processed in 0.034932 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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