Originally posted by namejm at 2006-8-14 20:04:
如果要用xcopy的话,不会那么简单的,因为楼主要求复制的是每个子目录中的a1.txt、a2.txt和a3.txt这三个文件,并且要求bbb的目录可以任意指定。 ...
按照老大给的方法试验了一下,不理想,在BBB目录中拷贝了所需要的文件的同时,也把AAA里面的其它孙目录(子目录的子目录。不知这样称呼对不对?)搬到BBB目录中了
自己鼓捣了一整天,终于做出了一个,还成,基本满足了我的要求,贴出来老大帮我分析一下,看看还能不能简练些?主要是自己做WindowsXP OEM 20合一的盘用,以前光靠手动提取、拷贝文件让人心烦,而且容易出错
我自己瞎鼓捣的东东:
@Echo Off
Set TT=WindowsXP OEM文件提取复制工具
COLOR 1F
TITLE %TT%
:start
CLS
Echo.
Echo ╭══════════════════╮
Echo ║ ║
Echo ╭═══┤ WindowsXP OEM文件提取复制工具 ├═══╮
Echo ║ ║ ║ ║
Echo ║ ╰══════════════════╯ ║
Echo ║ ║
Echo ║ 您是要从光盘或硬盘中提取OEM文件呢? ║
Echo ║ 还是想拷贝现有的OEM文件到硬盘中? ║
Echo ║ ║
Echo ║ 从光盘或硬盘中提取OEM文件 ║
Echo ║ 拷贝现有的OEM文件到硬盘中 ║
Echo ║ 从光盘或硬盘中提取OEM图标 ║
Echo ║ 拷贝现有的OEM图标到硬盘中 ║
Echo ║ 退出 ║
Echo ║ ║
Echo ╟──────────────────────────╢
Echo ║ 注:1. 根据提示自行输入光盘或硬盘文件目录的绝对路径║
Echo ║ 2. 文件所在路径不允许有空格。 ║
Echo ╟══════════════════════════╢
Echo ║ 版权所有:jtyuer 供网友们交流研究,翻版不究 ║
Echo ╰──────────────────────────╯
Echo.
Set Choice=
Set /P Choice= 请选择要进行的操作(1/2/3/4/Q),然后按回车:
If Not '%Choice%'=='' SET Choice=%Choice:~0,1%
If /I '%Choice%'=='1' GOTO funa
If /I '%Choice%'=='2' GOTO funa
If /I '%Choice%'=='3' GOTO funa
If /I '%Choice%'=='4' GOTO funa
If /I '%Choice%'=='Q' EXIT
Goto start
:funa
If /I '%Choice%'=='1' (
TITLE %TT% - 从光盘或硬盘中提取OEM文件
)
If /I '%Choice%'=='2' (
TITLE %TT% - 拷贝现有的OEM文件到硬盘中
Goto funb
)
If /I '%Choice%'=='3' (
TITLE %TT% - 拷贝现有的OEM图标到硬盘中
Goto func
)
If /I '%Choice%'=='4' (
TITLE %TT% - 拷贝现有的OEM图标到硬盘中
Goto fund
)
If "%Err%"=="" (
CLS
)
:funa1
cls
Echo 请输入OEM文件所在的目录名,如c:\1234
Echo.
Echo 输入路径时不包括i386子目录路径
echo.
Set input=
Set /P input= 输入路径:
If "%input%"=="" Goto funa
If Not Exist %input% (
Set Err=1
Echo.
CLS
Echo 您所输入的OEM文件目录路径不正确,请重新输入
Echo.
Goto :funa1
)
::funa2
cls
Echo 请输入保存OEM文件的目录名,如d:\1234
echo.
Set output=
Set /P output= 输入路径:
If "%input%"=="" Goto funa1
If Not Exist %output% (
Set Err=1
Echo.
CLS
Echo 保存OEM文件的目录%output%不存在,自动建立%output%目录
Echo.
Echo.
Echo.
@md %output%
)
:Copy
@Echo dpcdll.dl_>%temp%\oem.txt
@Echo oembios.bi_>>%temp%\oem.txt
@Echo oembios.ca_>>%temp%\oem.txt
@Echo oembios.da_>>%temp%\oem.txt
@Echo oembios.si_>>%temp%\oem.txt
@Echo pidgen.dll>>%temp%\oem.txt
@Echo setupp.ini>>%temp%\oem.txt
@Echo winnt.sif>>%temp%\oem.txt
for /f %%a in ('dir /ad /b %input%') do md %output%\%%a\i386 & FOR /f %%b in (%temp%\oem.txt) do copy /y %input%\%%a\i386\%%b %output%\%%a\i386\
Goto Exit
:funb
cls
Echo 请输入OEM文件所在的目录名,如c:\1234
Echo.
Echo 输入路径时不包括i386子目录路径
echo.
Set input=
Set /P input= 输入路径:
If "%input%"=="" Goto funb
If Not Exist %input% (
Set Err=1
Echo.
CLS
Echo 您所输入的OEM文件目录路径不正确,请重新输入
Echo.
Goto funb
)
:funb1
cls
Echo 请输入要拷贝OEM文件的目录名,如d:\1234
echo.
Set output=
Set /P output= 输入路径:
If "%input%"=="" Goto funb1
If Not Exist %output% (
Set Err=1
Echo.
CLS
Echo 保存OEM文件的目录%output%不存在,自动建立%output%目录
Echo.
Echo.
@md %output%
)
:Copy
For /f %%m In ('dir /ad /b %input%') do md %output%\%%m\i386 & Copy /y %input%\%%m\i386\*.* %output%\%%m\i386\
Goto Exit
:func
cls
Echo 请输入OEM图标所在的目录名,如c:\1234
Echo.
Set input=
Set /P input= 输入路径:
If "%input%"=="" Goto func
If Not Exist %input% (
Set Err=1
Echo.
CLS
Echo 您所输入的OEM图标目录路径不正确,请重新输入
Echo.
Goto func
)
:func1
cls
Echo 请输入要拷贝OEM图标的目录名,如d:\1234
echo.
Set output=
Set /P output= 输入路径:
If "%input%"=="" Goto funb1
If Not Exist %output% (
Set Err=1
Echo.
CLS
Echo 保存OEM图标的目录%output%不存在,自动建立%output%目录
Echo.
Echo.
@md %output%
)
:Copy
If Exist %temp%\ml.txt Del %temp%\ml.txt
If Exist %temp%\oem.txt Del %temp%\oem.txt
@Echo oeminfo.ini>%temp%\oem.txt
@Echo oemlogo.bmp>>%temp%\oem.txt
for /f %%a in ('dir /ad /b %input%') do md %output%\%%a\$OEM$\$$\SYSTEM32 & FOR /f %%b in (%temp%\oem.txt) do copy /y %input%\%%a\$OEM$\$$\SYSTEM32\%%b %output%\%%a\$OEM$\$$\SYSTEM32\
Goto Exit
:fund
cls
Echo 请输入OEM图标所在的目录名,如c:\1234
Echo.
Set input=
Set /P input= 输入路径:
If "%input%"=="" Goto fund
If Not Exist %input% (
Set Err=1
Echo.
CLS
Echo 您所输入的OEM图标所在的目录路径不正确,请重新输入
Echo.
Goto fund
)
:fund1
cls
Echo 请输入要拷贝OEM图标的目录名,如d:\1234
echo.
Set output=
Set /P output= 输入路径:
If "%input%"=="" Goto fund1
If Not Exist %output% (
Set Err=1
Echo.
CLS
Echo 保存OEM文件的目录%output%不存在,自动建立%output%目录
Echo.
@md %output%
)
:Copy
For /f %%m In ('dir /ad /b %input%') do md %output%\%%m\$OEM$\$$\SYSTEM32 & Copy /y %input%\%%m\$OEM$\$$\SYSTEM32\*.* %output%\%%m\$OEM$\$$\SYSTEM32\
Goto Exit
:Exit
CLS
Echo.
Echo ╭══════════════════╮
Echo ║ ║
Echo ╭═══┤ WindowsXP OEM文件提取复制工具 ├═══╮
Echo ║ ║ ║ ║
Echo ║ ╰══════════════════╯ ║
Echo ║ ║
Echo ║ 您需要的操作已经完成,请核查. . . ║
Echo ║ 感谢您的使用! ║
Echo ║ 你还准备继续拷贝文件吗? ║
Echo ║ ║
Echo ║ ║
Echo ║ 继续拷贝文件 ║
Echo ║ ║
Echo ║ 退出 ║
Echo ║ ║
Echo ╟──────────────────────────╢
Echo ║ 注:1. 根据提示自行输入光盘或硬盘文件目录的绝对路径║
Echo ║ 2. 文件所在路径不允许有空格。 ║
Echo ╟══════════════════════════╢
Echo ║ 版权所有:jtyuer 供网友们交流研究,翻版不究 ║
Echo ╰──────────────────────────╯
Echo.
Set Choice=
Set /P Choice= 请选择要进行的操作(y/n),然后按回车:
If Not '%Choice%'=='' SET Choice=%Choice:~0,1%
If /I '%Choice%'=='y' GOTO start
If /I '%Choice%'=='n' GOTO end
Goto Exit
:End