无忧启动论坛

标题: 批处理找文件 [打印本页]

作者: hurry307    时间: 2017-9-16 19:03
标题: 批处理找文件
我想通过批处理找到磁盘里的GHO文件,并且获取该文件的路径(包括盘符,并且我不知道GHO文件到底是在C盘,还是D盘,还是什么盘),并且把获取的GHO文件的路径值付给某个参数
比如
GHO文件在D盘根目录下d:\bak.gho
SET GETPATH
set GHOPATH=GETPATH


作者: tools241    时间: 2017-9-16 19:23
本帖最后由 tools241 于 2017-9-17 11:20 编辑

一.假设要找的是文件夹 ?:\bak.gho
for %%i in ( A B 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 %%i:\bak.gho set GETPATH=%%i:\bak.gho

二.找出所有的 *.GHO 档, 将清单存到 C:\tmp.txt
copy  /Y  nul  C:\tmp.txt  2>nul  >nul
for %%i in ( A B 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 find_Unix.exe %%i\  |  tr.exe "\n" "?" | sed -e "s:?:?/:g" | tr "?" "\r" | tr "/" "\n" | grep.exe "\.[Gg][Hh][Oo]$" >> C:\tmp.txt
注: 此处的 find.exe , tr.exe , sed.exe 及 grep.exe 为( 自 Linux 移植到DOS 之下的 ) "仿Linux/Unix" 命令, 而非 系统的 find.exe
如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=383106

* 范例8:找出所有的 *.GHO 档, 将清单存到 C:\tmp.txt
del  /Q  C:\tmp.txt 2>nul >nul
for %%i in ( A B 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 find_Unix.exe %%i\  |  tr.exe "\n" "?" | sed -e "s:?:?/:g" | tr "?" "\r" | tr "/" "\n" | grep.exe "\.[Gg][Hh][Oo]$" >> C:\tmp.txt

注: 本例中已将仿Linux的find.exe改名为find_Unix.exe以免与Windows系统的find.exe同名产生混淆.
列出 C:\ 下的所有档案清单                                                                -- find_Unix.exe C:\
将每一行中Linux的new line码(Ctrl+j)换成 ?                                        -- tr.exe "\n" "?"
将全部的 ? 改成 ?/
( s 表示 "替代" , g 表示全部而非一个 )                   -- sed.exe -e "s:?:?/:g"  
将每一行中 ?/ 换成 Windows的return(Ctrl+M)码 + new line码(Ctrl+j)  -- tr.exe "?" "\r" | tr "/" "\n"
找出 "行末" 含 .GHO  或 *.gho 的各行( $ 表示位于最后 )
                     -- grep.exe "\.[Gg][Hh][Oo]$"
作者: hurry307    时间: 2017-9-16 19:58
谢谢,明天试下
作者: nttwqz    时间: 2017-9-16 20:31
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 遍历能访问的所有分区中的所有文件夹及其子目录
  4. echo 查找中...
  5. for /f "tokens=2*" %%a in ('fsutil fsinfo drives') do (
  6.         for /d %%c in (%%a %%b) do (
  7.                 pushd %%c 2>nul&&for /r %%d in (*.wim) do (
  8.                         set /a n+=1
  9.                         echo %%~d&set ghopath-!n!=%%d
  10.                 )
  11.         )
  12. )
  13. cls
  14. echo 找到的文件数量:!n! 个
  15. for /l %%a in (1,1,!n!) do echo [%%a]        !ghopath-%%a!
  16. set /p select=请选择:
  17. rem 下面这句请自行更改
  18. echo %select%
  19. pause
复制代码

作者: qpliuxin    时间: 2017-9-18 15:11
本帖最后由 qpliuxin 于 2017-9-18 15:17 编辑
nttwqz 发表于 2017-9-16 20:31


你好,这个批处理运行后
echo %select%
显示的是我输入的序列号,而不是文件路径,麻烦问下如何修改啊





作者: nttwqz    时间: 2017-9-18 16:19
qpliuxin 发表于 2017-9-18 15:11
你好,这个批处理运行后
echo %select%
显示的是我输入的序列号,而不是文件路径,麻烦问下如何修改 ...

你这个,可以说批处理基本就不会啊。

!ghopath-%select%!代表你选择的gho文件
作者: qpliuxin    时间: 2017-9-18 23:49
nttwqz 发表于 2017-9-18 16:19
你这个,可以说批处理基本就不会啊。

!ghopath-%select%!代表你选择的gho文件

谢谢,没学过批处理,看的也有点理解错了,这个是赋路径给程序,我就想获取文件路径该怎么修改呢
作者: nttwqz    时间: 2017-9-19 00:14
qpliuxin 发表于 2017-9-18 23:49
谢谢,没学过批处理,看的也有点理解错了,这个是赋路径给程序,我就想获取文件路径该怎么修改呢

!ghopath-%select%!变量的值就是你选择的GHO文件的路径,也就是说,你选择的文件的文件路径已经赋值给变量!ghopath-%select%!,你还有怎么赋值???
作者: 527104427    时间: 2017-9-19 13:18
服了。。。。。。。
作者: nttwqz    时间: 2017-9-19 14:03
527104427 发表于 2017-9-19 13:18
服了。。。。。。。

我也是醉了……
作者: qpliuxin    时间: 2017-9-20 12:20
谢谢各位,打错了一个字母,结果一直错误,以后要多多学习啊
作者: 2012sdta1541    时间: 2017-10-31 00:30
本帖最后由 2012sdta1541 于 2017-10-31 02:32 编辑

怎么不能在系统自带的winre中恢复wim文件呢?
Dism.exe /Apply-Image /ImageFile:%select% /Index:1 /ApplyDir:c:\
错误: 87

原来文件路径输入“!ghopath-%select%!”才行啊。以下正常恢复了。
Dism.exe /Apply-Image /ImageFile:!ghopath-%select%! /Index:1 /ApplyDir:c:\

谢谢 nttwqz 提供的这个批处理,很方便。
作者: x9tian    时间: 2017-11-3 22:20
527104427 发表于 2017-9-19 13:18
服了。。。。。。。

然而却没多少卵用




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3