无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7253|回复: 26

[求助] 全盘搜索install.wim文件的命令 求简化

[复制链接]
发表于 2017-10-16 20:00:14 | 显示全部楼层 |阅读模式
本帖最后由 wchongy 于 2017-10-16 21:29 编辑

全盘搜索 install.wim文件!!如果仅有一个文件自动拷贝到R:\OKRBackup\Factory 路径下!如果有一个以上文件,选择以后拷贝。如果没有发现该文件,自动关闭搜索退出!!

title 搜索 Install.Wim 并拷贝
setlocal enabledelayedexpansion & cd /d %~dp0

::设置Wim文件保存目录
set WimDir=R:\OKRBackup\Factory

if not exist "!WimDir!" md "!WimDir!"
del /f /q WimList_*.Log 2>nul
for %%a in (D E F G H I J K L M N P) do (
    if exist "%%~a:\" (
        pushd %%~a:\
        echo 正在搜索 %%~a  Install.Wim,此过程可能很耗时间,请耐心等待。。。 & echo,
        for /r %%i in (*install.wim) do (
            if /i "%%~nxi"=="install.wim" (
                if /i not "%%~dpi"=="!WimDir!\" (
                    set /a Num+=1
                    set "Wim=%%~i"
                    >>"%~dp0WimList_CP.Log" echo ^|!Num!^|"%%~i"
                    >>"%~dp0WimList_XZ.Log" echo !Num!、Install.Wim 位于 "!Wim:\install.wim=!",文件大小: %%~zi 字节
                )
            )
        )
        popd
    )
)
cls
if defined Num (
    if !Num! equ 1 (
        echo 正在从 "!Wim:\install.wim=!" 中拷贝 Install.Wim,请耐心等待。。。& echo,
        copy "!Wim!" "!WimDir!\" 2>nul && (
            echo 拷贝成功!
        ) || (
            echo 系统镜像拷贝失败!请手动复制Install.Wim到打开的R:\OKRBackup\Factory文件夹下
            start R:\OKRBackup\Factory
        )
    ) else (
        type WimList_XZ.Log | more
        echo, & set /p xz=请选择要拷贝的 Install.Wim 编号并回车,不选择请直接回车:
        if defined xz for /f "tokens=2 delims=|" %%f in ('findstr "^|!xz!|" WimList_CP.Log') do (
            echo, & echo 正在从 "%%~dpf" 中拷贝 Install.Wim,请耐心等待。。。& echo,
            copy "%%~f" "!WimDir!\" 2>nul && (
                echo 拷贝成功!
            ) || (
                echo 系统镜像拷贝失败!请手动复制Install.Wim到打开的R:\OKRBackup\Factory文件夹下
                start R:\OKRBackup\Factory
            )
        )
    )
) else (
    echo 未发现 Install.Wim 文件。
)
del /f /q WimList_*.Log


echo
发表于 2017-10-16 23:23:55 | 显示全部楼层
有何意义???
回复

使用道具 举报

发表于 2017-10-16 23:54:10 | 显示全部楼层
  1. setlocal enabledelayedexpansion
  2. for /f "tokens=1,2* delims=:" %%a in ('wmic datafile where "filename='install' and extension='wim'" get name 2^>nul ^| findstr ":\" ^| findstr /n .') do (
  3.         set "wim-%%a=%%b:%%c"
  4.         echo %%a:        !wim-%%a!
  5. )
  6. if defined wim-2 (set /p xz=请选择:) else echo !wim-1!文件复制命令
  7. if not defined wim-1 echo 未发现 Install.Wim 文件。
  8. echo 您已选中!wim-%xz%!
复制代码

点评

wmic 全盘搜索,能知道搜索1级目录或者二级目录吗 可以排除某个分区吗,比如系统盘,目录多搜索会比较耗费时间。 可以多扩展名吗,比如wim esd同时搜索  详情 回复 发表于 2022-12-26 23:16
n大你好!求帮我修改一个bat,在D盘A文件夹里面有个1.pdf文件,在此文件夹下运行个bat,把1.pdf文件复制到*盘(盘符没有固定)/B文件夹,然后就弹出B文件夹窗口,就像平时双击打开文件夹这样子 @echo off cd /d "%~dp  详情 回复 发表于 2022-1-10 20:12
回复

使用道具 举报

发表于 2017-10-17 09:46:53 | 显示全部楼层
为了学习一下
回复

使用道具 举报

发表于 2022-1-10 20:12:14 来自手机 | 显示全部楼层
nttwqz 发表于 2017-10-16 23:54

n大你好!求帮我修改一个bat,在D盘A文件夹里面有个1.pdf文件,在此文件夹下运行个bat,把1.pdf文件复制到*盘(盘符没有固定)/B文件夹,然后就弹出B文件夹窗口,就像平时双击打开文件夹这样子
@echo off
cd /d "%~dp0"
set Bpath="你的B文件夹名称"
for %%i 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 (for /f "delims=" %%j in ('dir /ad/b/s "%%i:\%Bpath%"') do copy 1.pdf "%%j"&explorer "%%j" )
exit
试了一下,复制到子目录了!就是复制到了B文件夹下面的C文件夹了,弹出来是C文件夹里面
我就是想能复制到B文件夹目录下,弹出B文件夹目录窗口,帮我看一下哪里出错了,万分感谢!

点评

因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在根目录?在的话直接改用if exist %%i:\%Bpath% 。。。就好  详情 回复 发表于 2022-1-10 21:08
回复

使用道具 举报

发表于 2022-1-10 21:08:57 来自手机 | 显示全部楼层
qq328 发表于 2022-1-10 20:12
n大你好!求帮我修改一个bat,在D盘A文件夹里面有个1.pdf文件,在此文件夹下运行个bat,把1.pdf文件复制到 ...

因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在根目录?在的话直接改用if exist %%i:\%Bpath% 。。。就好

点评

这个思路 是正解  详情 回复 发表于 2022-1-13 11:24
直接改用if exist %%i:\%Bpath% ,一闪而过,不能用  详情 回复 发表于 2022-1-11 08:01
因为不知道B文件夹在哪个盘里,所以用for搜索全盘目录的文件夹,该怎么样修改?  详情 回复 发表于 2022-1-11 07:59
回复

使用道具 举报

发表于 2022-1-11 07:59:11 来自手机 | 显示全部楼层
nttwqz 发表于 2022-1-10 21:08
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在 ...

因为不知道B文件夹在哪个盘里,所以用for搜索全盘目录的文件夹,该怎么样修改?
回复

使用道具 举报

发表于 2022-1-11 08:01:38 来自手机 | 显示全部楼层
nttwqz 发表于 2022-1-10 21:08
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在 ...

直接改用if exist %%i:\%Bpath% ,一闪而过,不能用

点评

先打开cmd,在其中执行,查看错误并修复  详情 回复 发表于 2022-1-11 09:17
回复

使用道具 举报

发表于 2022-1-11 09:17:48 来自手机 | 显示全部楼层
qq328 发表于 2022-1-11 08:01
直接改用if exist %%i:\%Bpath% ,一闪而过,不能用

先打开cmd,在其中执行,查看错误并修复

点评

谢谢!  详情 回复 发表于 2022-1-11 11:35
回复

使用道具 举报

发表于 2022-1-11 11:35:26 来自手机 | 显示全部楼层
nttwqz 发表于 2022-1-11 09:17
先打开cmd,在其中执行,查看错误并修复

谢谢!
回复

使用道具 举报

发表于 2022-1-13 11:24:02 | 显示全部楼层
如果只是 判断 各个 分区盘符 下是否存在 install.wim 这个文件。
用 if exist x:\install.wim 就可以了,不用 dir 也不用 find
回复

使用道具 举报

发表于 2022-1-13 11:24:51 | 显示全部楼层
nttwqz 发表于 2022-1-10 21:08
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在 ...

这个思路 是正解
回复

使用道具 举报

发表于 2022-1-25 00:37:26 | 显示全部楼层
#在这里快速回复#
回复

使用道具 举报

发表于 2022-1-25 00:39:11 | 显示全部楼层
#在这里快速回复#謝謝樓主分享,學習了
回复

使用道具 举报

发表于 2022-12-26 23:16:52 | 显示全部楼层

wmic  全盘搜索,能只搜索1级目录或者二级目录吗
可以排除某个分区吗,比如系统盘,目录多搜索会比较耗费时间。
可以多扩展名吗,比如wim esd同时搜索

点评

如何查找根目录我知道,查找二级目录没有测试出来,毕竟好久不用wmic datafile这个命令了 随便写几句 echo 全盘一二级目录查找wim/esd文件 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  详情 回复 发表于 2022-12-28 23:02
回复

使用道具 举报

发表于 2022-12-27 20:25:24 来自手机 | 显示全部楼层
看懂了吗?但是还是要支持一下,感谢分享!
回复

使用道具 举报

发表于 2022-12-28 23:02:50 | 显示全部楼层
freesoft00 发表于 2022-12-26 23:16
wmic  全盘搜索,能只搜索1级目录或者二级目录吗
可以排除某个分区吗,比如系统盘,目录多搜索会比较耗 ...

如何查找根目录我知道,查找二级目录没有测试出来,毕竟好久不用wmic datafile这个命令了

  1. wmic datafile where "drive<>'%systemdrive%' and path='\\' and (extension='wim' or extension='esd')"  get name
复制代码

随便写几句

echo 全盘一二级目录查找wim/esd文件

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: if /i not "%systemdrive%"=="%%a:" (
        for %%b in (%%a:\*.wim %%a:\*.esd) do echo %%b
        for /f "delims=" %%c in ('dir %%a:\ /ad /b') do (
            for /f "delims=" %%d in ('dir "%%a:\%%c\*.wim","%%a:\%%c\*.esd" /a /b 2^>nul') do echo %%a:\%%c\%%d
        )
    )
)



点评

好的多谢! 另外再请教一个问题。 如何遍历磁盘,遍历分区,把mbr磁盘的活动分区列出来,把gpt的efi分区列出来 例如 磁盘1活动分区是2 磁盘2启动分区时1 这样的结果。 下载了你的分区信息那个脚本太复杂,有  详情 回复 发表于 2022-12-28 23:10

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

发表于 2022-12-28 23:10:01 | 显示全部楼层
nttwqz 发表于 2022-12-28 23:02
如何查找根目录我知道,查找二级目录没有测试出来,毕竟好久不用wmic datafile这个命令了

好的多谢!
另外再请教一个问题。
如何遍历磁盘,遍历分区,把mbr磁盘的活动分区列出来,把gpt的efi分区列出来
例如
磁盘1活动分区是2
磁盘2启动分区时1
这样的结果。
下载了你的分区信息那个脚本太复杂,有很多地方看不懂。

点评

脚本末尾有注释,这个实现特别简单,一般定制只需利用现成的变量即可。 搜索开始脚本定制,将:customcode和exit中间的代码删除,改为: 话说,你这是要搞个系统安装工具?自动?我觉得WinNTSetup的功能已经  详情 回复 发表于 2022-12-29 11:37
回复

使用道具 举报

发表于 2022-12-29 11:37:23 来自手机 | 显示全部楼层
freesoft00 发表于 2022-12-28 23:10
好的多谢!
另外再请教一个问题。
如何遍历磁盘,遍历分区,把mbr磁盘的活动分区列出来,把gpt的efi分 ...

脚本末尾有注释,这个实现特别简单,一般定制只需利用现成的变量即可。

搜索开始脚本定制,将:customcode和exit中间的代码删除,改为:
  1. for %%a in (!dkl!) do echo 磁盘 %%a 的活动/ESP分区是 !dk_%%a_act!
  2. pause
复制代码


话说,你这是要搞个系统安装工具?自动?我觉得WinNTSetup的功能已经够强大了,没必要自己弄,也没发现这工具有流氓行为。

点评

那到不是,安装系统的话确实工具更好用。  详情 回复 发表于 2022-12-29 11:54
回复

使用道具 举报

发表于 2022-12-29 11:54:15 | 显示全部楼层
nttwqz 发表于 2022-12-29 11:37
脚本末尾有注释,这个实现特别简单,一般定制只需利用现成的变量即可。

搜索开始脚本定制,将:customc ...

那到不是,安装系统的话确实工具更好用。

点评

------------------pecmd 脚本 envi parts= envi part_info= part list disk ,&disks forx * %&disks%,&disk, { part list part %&disk%,&parts0 forx * %&parts0%,&part, { ifex #%  详情 回复 发表于 2022-12-30 13:02
回复

使用道具 举报

发表于 2022-12-30 13:02:01 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2022-12-30 13:05 编辑
freesoft00 发表于 2022-12-29 11:54
那到不是,安装系统的话确实工具更好用。

------------------pecmd 脚本  ,获取硬盘分区序列中的 efi 分区 和激活的 主引导分区。

envi parts=
envi part_info=
part list disk ,&disks
forx * %&disks%,&disk,
{
    part list part %&disk%,&parts0
    forx * %&parts0%,&part,
    {
        ifex #%&part%>0,envi parts=%parts% %&disk%#%&part%
    }
}
envi efi_parts=
envi act_parts=
forx * %parts%,&part,
{
    part -fill list part %&part%,&part_info0
    mstr &id,&act=<2><3>%&part_info0%
    ifex '%&id%'='C12A7328-F81F-11D2-BA4B-00A0C93EC93B',envi efi_parts=%efi_parts% %&part%
    ifex '%&act%'='1',envi act_parts=%act_parts% %&part%
    envi part_info=%part_info%\n%&part% %&part_info0%
}

mess %part_info%\n\nEFI_PARTS=%efi_parts%\nACT_PARTS=%act_parts%

点评

这凌乱的pecmd语法,还是python比较优美已读。还有,我感觉linux shell的语法也比较坑爹,一堆乱七八糟的语法。  详情 回复 发表于 2022-12-30 15:37

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

发表于 2022-12-30 15:37:20 来自手机 | 显示全部楼层
dos时代菜鸟 发表于 2022-12-30 13:02
------------------pecmd 脚本  ,获取硬盘分区序列中的 efi 分区 和激活的 主引导分区。

envi parts= ...

这凌乱的pecmd语法,还是python比较优美已读。还有,我感觉linux shell的语法也比较坑爹,一堆乱七八糟的语法。

点评

python 编译环境太大。 pecmd 2012 就一个文件,我从来不去记忆他的语法或者指令,需要的时候,现查就是了,感觉就像巫师在熬汤。  详情 回复 发表于 2022-12-30 15:44
回复

使用道具 举报

发表于 2022-12-30 15:44:40 | 显示全部楼层
nttwqz 发表于 2022-12-30 15:37
这凌乱的pecmd语法,还是python比较优美已读。还有,我感觉linux shell的语法也比较坑爹,一堆乱七八糟的 ...



python 编译环境太大。

pecmd 2012 就一个文件,我从来不去记忆他的语法或者指令,需要的时候,现查就是了,感觉就像巫师在熬汤。

点评

哈哈哈,跟我一样,都是现炒现卖的!从来不记命令  详情 回复 发表于 2022-12-30 17:50
回复

使用道具 举报

发表于 2022-12-30 17:09:35 | 显示全部楼层
efi&amp;act_partst.7z (1.08 MB, 下载次数: 2)
回复

使用道具 举报

发表于 2022-12-30 17:50:56 | 显示全部楼层
dos时代菜鸟 发表于 2022-12-30 15:44
python 编译环境太大。

pecmd 2012 就一个文件,我从来不去记忆他的语法或者指令,需要 ...

哈哈哈,跟我一样,都是现炒现卖的!从来不记命令

点评

你们俩真虚伪  详情 回复 发表于 2022-12-30 17:56
回复

使用道具 举报

发表于 2022-12-30 17:56:47 来自手机 | 显示全部楼层
527104427 发表于 2022-12-30 17:50
哈哈哈,跟我一样,都是现炒现卖的!从来不记命令

你们俩真虚伪
回复

使用道具 举报

发表于 2022-12-30 22:26:30 | 显示全部楼层
PECMD语法习惯了,就好像CMD的升级版,比较容易衍接,不用费脑子。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-18 15:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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