全盘搜索install.wim文件的命令 求简化
本帖最后由 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 正在搜索 %%~aInstall.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 有何意义??? setlocal enabledelayedexpansion
for /f "tokens=1,2* delims=:" %%a in ('wmic datafile where "filename='install' and extension='wim'" get name 2^>nul ^| findstr ":\\" ^| findstr /n .') do (
set "wim-%%a=%%b:%%c"
echo %%a: !wim-%%a!
)
if defined wim-2 (set /p xz=请选择:) else echo !wim-1!文件复制命令
if not defined wim-1 echo 未发现 Install.Wim 文件。
echo 您已选中!wim-%xz%! 为了学习一下 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文件夹目录窗口,帮我看一下哪里出错了,万分感谢!
qq328 发表于 2022-1-10 20:12
n大你好!求帮我修改一个bat,在D盘A文件夹里面有个1.pdf文件,在此文件夹下运行个bat,把1.pdf文件复制到 ...
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在根目录?在的话直接改用if exist %%i:\%Bpath% 。。。就好 nttwqz 发表于 2022-1-10 21:08
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在 ...
因为不知道B文件夹在哪个盘里,所以用for搜索全盘目录的文件夹,该怎么样修改?
nttwqz 发表于 2022-1-10 21:08
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在 ...
直接改用if exist %%i:\%Bpath% ,一闪而过,不能用 qq328 发表于 2022-1-11 08:01
直接改用if exist %%i:\%Bpath% ,一闪而过,不能用
先打开cmd,在其中执行,查看错误并修复 nttwqz 发表于 2022-1-11 09:17
先打开cmd,在其中执行,查看错误并修复
谢谢! 如果只是 判断 各个 分区盘符 下是否存在 install.wim 这个文件。
用 if exist x:\install.wim 就可以了,不用 dir 也不用 find
nttwqz 发表于 2022-1-10 21:08
因为你用了两个for,第二个for去遍历B文件夹下的所有子文件夹,这样应该是复制到其所有子目录。难道B不在 ...
这个思路 是正解 #在这里快速回复# #在这里快速回复#謝謝樓主分享,學習了 nttwqz 发表于 2017-10-16 23:54
wmic全盘搜索,能只搜索1级目录或者二级目录吗
可以排除某个分区吗,比如系统盘,目录多搜索会比较耗费时间。
可以多扩展名吗,比如wim esd同时搜索 看懂了吗?但是还是要支持一下,感谢分享! freesoft00 发表于 2022-12-26 23:16
wmic全盘搜索,能只搜索1级目录或者二级目录吗
可以排除某个分区吗,比如系统盘,目录多搜索会比较耗 ...
如何查找根目录我知道,查找二级目录没有测试出来,毕竟好久不用wmic datafile这个命令了
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
)
)
)
nttwqz 发表于 2022-12-28 23:02
如何查找根目录我知道,查找二级目录没有测试出来,毕竟好久不用wmic datafile这个命令了
好的多谢!
另外再请教一个问题。
如何遍历磁盘,遍历分区,把mbr磁盘的活动分区列出来,把gpt的efi分区列出来
例如
磁盘1活动分区是2
磁盘2启动分区时1
这样的结果。
下载了你的分区信息那个脚本太复杂,有很多地方看不懂。
freesoft00 发表于 2022-12-28 23:10
好的多谢!
另外再请教一个问题。
如何遍历磁盘,遍历分区,把mbr磁盘的活动分区列出来,把gpt的efi分 ...
脚本末尾有注释,这个实现特别简单,一般定制只需利用现成的变量即可。
搜索开始脚本定制,将:customcode和exit中间的代码删除,改为:
for %%a in (!dkl!) do echo 磁盘 %%a 的活动/ESP分区是 !dk_%%a_act!
pause
话说,你这是要搞个系统安装工具?自动?我觉得WinNTSetup的功能已经够强大了,没必要自己弄,也没发现这工具有流氓行为。
nttwqz 发表于 2022-12-29 11:37
脚本末尾有注释,这个实现特别简单,一般定制只需利用现成的变量即可。
搜索开始脚本定制,将:customc ...
那到不是,安装系统的话确实工具更好用。
本帖最后由 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% dos时代菜鸟 发表于 2022-12-30 13:02
------------------pecmd 脚本,获取硬盘分区序列中的 efi 分区 和激活的 主引导分区。
envi parts= ...
这凌乱的pecmd语法,还是python比较优美已读。还有,我感觉linux shell的语法也比较坑爹,一堆乱七八糟的语法。 nttwqz 发表于 2022-12-30 15:37
这凌乱的pecmd语法,还是python比较优美已读。还有,我感觉linux shell的语法也比较坑爹,一堆乱七八糟的 ...
{:1_186:}
python 编译环境太大。
pecmd 2012 就一个文件,我从来不去记忆他的语法或者指令,需要的时候,现查就是了,感觉就像巫师在熬汤。
pecmd 瞬间获取 整个磁盘分区序列中的EFI 分区 和 Act分区。
dos时代菜鸟 发表于 2022-12-30 15:44
python 编译环境太大。
pecmd 2012 就一个文件,我从来不去记忆他的语法或者指令,需要 ...
哈哈哈,跟我一样,都是现炒现卖的!从来不记命令 527104427 发表于 2022-12-30 17:50
哈哈哈,跟我一样,都是现炒现卖的!从来不记命令
你们俩真虚伪 PECMD语法习惯了,就好像CMD的升级版,比较容易衍接,不用费脑子。
页:
[1]