|
本帖最后由 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]$" |
|