无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5739|回复: 12
打印 上一主题 下一主题

[求助] 批处理找文件

[复制链接]
跳转到指定楼层
1#
发表于 2017-9-16 19:03:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想通过批处理找到磁盘里的GHO文件,并且获取该文件的路径(包括盘符,并且我不知道GHO文件到底是在C盘,还是D盘,还是什么盘),并且把获取的GHO文件的路径值付给某个参数
比如
GHO文件在D盘根目录下d:\bak.gho
SET GETPATH
set GHOPATH=GETPATH

2#
发表于 2017-9-16 19:23:48 | 只看该作者
本帖最后由 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]$"
回复

使用道具 举报

3#
 楼主| 发表于 2017-9-16 19:58:54 来自手机 | 只看该作者
谢谢,明天试下
回复

使用道具 举报

4#
发表于 2017-9-16 20:31:19 | 只看该作者
  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
复制代码

点评

你好,这个批处理运行后 echo %select% 显示的是我输入的序列号,而不是文件路径,麻烦问下如何修改啊 [attachimg]353563[/attachimg]  详情 回复 发表于 2017-9-18 15:11
回复

使用道具 举报

5#
发表于 2017-9-18 15:11:50 | 只看该作者
本帖最后由 qpliuxin 于 2017-9-18 15:17 编辑


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




点评

你这个,可以说批处理基本就不会啊。 !ghopath-%select%!代表你选择的gho文件  详情 回复 发表于 2017-9-18 16:19
回复

使用道具 举报

6#
发表于 2017-9-18 16:19:35 来自手机 | 只看该作者
qpliuxin 发表于 2017-9-18 15:11
你好,这个批处理运行后
echo %select%
显示的是我输入的序列号,而不是文件路径,麻烦问下如何修改 ...

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

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

点评

谢谢,没学过批处理,看的也有点理解错了,这个是赋路径给程序,我就想获取文件路径该怎么修改呢  详情 回复 发表于 2017-9-18 23:49
嗯,完全没有学过这个,抄写都有点累,只能抄袭修改下,谢谢你了  详情 回复 发表于 2017-9-18 23:09
回复

使用道具 举报

7#
发表于 2017-9-18 23:49:05 来自手机 | 只看该作者
nttwqz 发表于 2017-9-18 16:19
你这个,可以说批处理基本就不会啊。

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

谢谢,没学过批处理,看的也有点理解错了,这个是赋路径给程序,我就想获取文件路径该怎么修改呢

点评

!ghopath-%select%!变量的值就是你选择的GHO文件的路径,也就是说,你选择的文件的文件路径已经赋值给变量!ghopath-%select%!,你还有怎么赋值???  详情 回复 发表于 2017-9-19 00:14
回复

使用道具 举报

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

!ghopath-%select%!变量的值就是你选择的GHO文件的路径,也就是说,你选择的文件的文件路径已经赋值给变量!ghopath-%select%!,你还有怎么赋值???

点评

额,这方面不太懂,所以说的不太清楚,我就需要文件路径,不需要赋值等其他操作,该如何修改  详情 回复 发表于 2017-9-19 12:28
回复

使用道具 举报

9#
发表于 2017-9-19 13:18:21 | 只看该作者
服了。。。。。。。

点评

我也是醉了……  详情 回复 发表于 2017-9-19 14:03
回复

使用道具 举报

10#
发表于 2017-9-19 14:03:34 来自手机 | 只看该作者
527104427 发表于 2017-9-19 13:18
服了。。。。。。。

我也是醉了……
回复

使用道具 举报

11#
发表于 2017-9-20 12:20:40 | 只看该作者
谢谢各位,打错了一个字母,结果一直错误,以后要多多学习啊
回复

使用道具 举报

12#
发表于 2017-10-31 00:30:35 | 只看该作者
本帖最后由 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 提供的这个批处理,很方便。
回复

使用道具 举报

13#
发表于 2017-11-3 22:20:15 来自手机 | 只看该作者
527104427 发表于 2017-9-19 13:18
服了。。。。。。。

然而却没多少卵用
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 13:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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