标题: 问个文字替换的问题
[打印本页]
作者: tclshx
时间: 2006-9-18 20:44
标题: 问个文字替换的问题
我要将C:\MININT\INF\LAYOUT.INF中的所有"\386"替换成"\MININT";
将C:\MININT\PECONFIG.INI中的所有"\386"替换成"\MININT";
会的帮我写个简单的批处理吧
作者: electronixtar
时间: 2006-9-18 20:53
做PE么?
作者: namejm
时间: 2006-9-18 20:58
以下代码可以在当前目录下生成处理后的layout_.inf和peconfig_.ini,请测试是否可以使用:
@echo off
cd.>layout_.inf
cd.>peconfig_.ini
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (C:\MININT\INF\LAYOUT.INF) do (
set var=%%i
set "var=!var:\386=\MININT!"
echo !var!>>layout_.inf
)
for /f "tokens=*" %%i in (C:\MININT\PECONFIG.INI) do (
set str=%%i
set "str=!str:\386=\MININT!"
echo !str!>>peconfig_.ini
)
作者: tclshx
时间: 2006-9-18 21:30
Quote: |
Originally posted by namejm at 2006-9-18 08:58 PM:
以下代码可以在当前目录下生成处理后的layout_.inf和peconfig_.ini,请测试是否可以使用:
[code]
@echo off
cd.>layout_.inf
cd.>peconfig_.ini
setlocal enabl ... |
|
没能成功
我要的是将C:\MININT\INF\LAYOUT.INF中的所有"\386"替换成"\MININT";
将C:\MININT\PECONFIG.INI中的所有"\386"替换成"\MININT";
作者: namejm
时间: 2006-9-18 21:38
字符串本身是带了引号的吗?
作者: tclshx
时间: 2006-9-18 21:42
Quote: |
Originally posted by namejm at 2006-9-18 09:38 PM:
字符串本身是带了引号的吗? |
|
没有引号
作者: namejm
时间: 2006-9-18 21:51
这就有点奇怪了。可能是你的inf和ini中带有CMD的敏感字符,所以会出错吧,贴一段内容出来看看。
作者: tclshx
时间: 2006-9-18 22:04
Quote: |
Originally posted by namejm at 2006-9-18 09:51 PM:
这就有点奇怪了。可能是你的inf和ini中带有CMD的敏感字符,所以会出错吧,贴一段内容出来看看。 |
|
PECONFIG.INI内容:
程序目录 = Programs
启动组快捷方式 = Programs\SetDisplay\SetDisplay.exe;显示属性设置
启动组快捷方式 = I386\System32\HideCMD.exe|%ProgramFiles%\FreeWB\删垃圾装极点.CMD|%ProgramFiles%\FreeWB\FREEWBS.EXE;极点中文
快速启动栏 = I386\System32\HideCMD.exe|%ProgramFiles%\FreeWB\删垃圾装极点.CMD|%ProgramFiles%\FreeWB\FREEWBS.EXE;极点中文
快速启动栏 = I386\System32\cleanmgr.exe;清除垃圾
快速启动栏 = Programs\SETPAGEFILE\SETPAGEFILE.EXE;调节虚拟内存
桌面快捷方式 = Programs\MSVCD\VCDTOOL.EXE;微软虚拟光驱VCDTOOL
桌面快捷方式 = Programs\VDM\VDM1.EXE;虚拟驱动器VDM1
桌面快捷方式 = Programs\VDM\VDM2.EXE;虚拟驱动器VDM2
桌面快捷方式 = Programs\WinRAR\WinRAR.EXE;解压工具WinRAR
桌面快捷方式 = Programs\Ghost8\Ghost32.exe;克隆工具Ghost32
桌面快捷方式 = Programs\Ghost8\GHOSTEXP.EXE;Gho映像浏览器GHOSTEXP
桌面快捷方式 = Programs\WinHDM\WindowsHDM.exe;硬盘管理大师WinPM
桌面快捷方式 = Programs\Acronis\trueimage.exe;克隆工具Acronis TrueImage
桌面快捷方式 = Programs\系统检测\EVEREST\EVEREST.exe;硬件及系统环境检测(Everest)
桌面快捷方式 = Programs\系统检测\CPUZ\CPUZ.exe;CPU 检测(CPU-Z)
桌面快捷方式 = Programs\系统检测\DisplayX\DisplayX.exe;显示器测试工具(DisplayX)
桌面快捷方式 = Programs\系统检测\CCD坏点检测\CCD_CHECK.EXE;数码相机 CCD 坏点检测
桌面快捷方式 = Programs\系统检测\MEMTEST\MEMTEST.EXE;物理内存检测器(MemTest)
桌面快捷方式 = Programs\系统检测\super_pi\super_pi.exe;经典测试工具 SuperPI MOD
桌面快捷方式 = Programs\系统检测\BIOS信息\BIOSAG.EXE;BIOS信息检测及更新
桌面快捷方式 = WINPE安装\安装XPE到C盘.EXE;安装XPE到C盘.EXE
程序组快捷方式 = I386\SYSTEM32\ErdRoot.exe||%SystemRoot%\EXPLORER.EXE;帐户及系统密码修改\_ERD2003汉化版\_设定ERD的目标Windows
程序组快捷方式 = Programs\erdcmd2003\regedit.exe;帐户及系统密码修改\_ERD2003汉化版\编辑目标Windows的注册表
程序组快捷方式 = Programs\erdcmd2003\locksmith.exe;帐户及系统密码修改\_ERD2003汉化版\修改目标Windows的登录密码
程序组快捷方式 = Programs\erdcmd2003\SYSTEMRESTORE.EXE;帐户及系统密码修改\_ERD2003汉化版\目标Windows的系统还原
程序组快捷方式 = I386\SYSTEM32\PASSWDRENEW.EXE;帐户及系统密码修改\帐户及系统密码修改PASSWDRENEW
程序组快捷方式 = I386\SYSTEM32\AWPR.EXE;帐户及系统密码修改\多功能密码工具AWPR
程序组快捷方式 = Programs\硬盘保护卡克星\CRDISK.EXE;硬盘保护卡破解
LAYOUT.INF中的部分内容(贴多了字符就超过限制了):
11 = %cdname%,%cdtagfilem%,,\amd64
12 = %cdname%,%cdtagfilem%,,\amd64
13 = %cdname%,%cdtagfilem%,,\amd64
14 = %cdname%,%cdtagfilem%,,\amd64
15 = %cdname%,%cdtagfilem%,,\amd64
55 = %cdname%,%cdtagfilem%,,\i386
56 = %cdname%,%cdtagfilem%,,\i386\lang
[SourceDisksNames.ia64]
1 = %cdname%,%cdtagfilem%,,\ia64
7 = %cdname%,%cdtagfilem%,,\ia64\lang
55 = %cdname%,%cdtagfilem%,,\i386
56 = %cdname%,%cdtagfilem%,,\i386\lang
[WinntDirectories]
1 = "\"
2 = system32
3 = system32\config
4 = system32\drivers
5 = system
7 = system32\ras
9 = system32\spool
10 = system32\spool\drivers
11 = system32\spool\drivers\w32x86\3
12 = system32\spool\prtprocs
13 = system32\spool\prtprocs\w32x86
14 = system32\wins
15 = system32\dhcp
16 = repair
17 = system32\drivers\etc
18 = system32\spool\drivers\w32x86
19 = system32\drivers\disdn
20 = inf
21 = Help
22 = Fonts
23 = Config
24 = msagent\intl
25 = Cursors
26 = Media
27 = java
28 = java\classes
29 = java\trustlib
30 = system32\ShellExt
31 = Web
32 = system32\Setup
33 = Web\printers
34 = system32\spool\drivers\color
35 = system32\wbem
36 = system32\wbem\Repository
37 = addins
38 = "Connection Wizard"
39 = "Driver Cache\i386"
作者: namejm
时间: 2006-9-18 22:12
果然带有敏感字符,|和||就是,汗一个先。
如果只想达到目的,那么,就不要用批处理来解决吧,用记事本的替换功能就不会出错了——虽然批处理能解决这个问题,但是代码将会显得比较臃肿。
作者: tclshx
时间: 2006-9-18 22:16
LAYOUT.INF中并没有你说的敏感字符|和||,也没有替换成功.
作者: 不得不爱
时间: 2006-9-19 01:44
我想你是要i386替换成MININT吧!看下下面的可以不!
Quote: |
@echo off
cd.>layout_.inf
cd.>peconfig_.ini
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (C:\MININT\INF\LAYOUT.INF) do (
set var=%%i
set "var=!var:i386=MININT!"
echo !var!>>layout_.inf
)
for /f "tokens=*" %%i in (C:\MININT\PECONFIG.INI) do (
set str=%%i
set "str=!str:i386=MININT!"
echo !str!>>peconfig_.ini
) |
|
作者: tclshx
时间: 2006-9-19 03:46
Quote: |
@echo off
cd.>layout_.inf
cd.>peconfig_.ini
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (C:\MININT\INF\LAYOUT.INF) do (
set var=%%i
set "var=!var:i386=MININT!"
echo !var!>>layout_.inf
)
for /f "tokens=*" %%i in (C:\MININT\PECONFIG.INI) do (
set str=%%i
set "str=!str:i386=MININT!"
echo !str!>>peconfig_.ini
)
|
|
第一个成功,第二个不成功
作者: 不得不爱
时间: 2006-9-19 04:37
第二个是空的吗?是的话就是你给的路径错了!第二个里还有I386吗?
作者: 不得不爱
时间: 2006-9-19 04:48
可是我是成功了的啊!
作者: namejm
时间: 2006-9-19 05:48
Quote: |
Originally posted by tclshx at 2006-9-18 22:16:
LAYOUT.INF中并没有你说的敏感字符|和||,也没有替换成功. |
|
虽然没有敏感字符|或者||,但是CMD的敏感字符并非只它两个,可能含有其他的敏感字符,建议你把两个文件的内容都贴全。
作者: tclshx
时间: 2006-9-19 06:07
Quote: |
Originally posted by qwe1234567 at 2006-9-19 04:48 AM:
可是我是成功了的啊! |
|
@echo OFF
REM 此批处理要和XCOPY.EXE等DOS文件同放在根目录中的一个文件夹内,此批处理适用于老九
的64M_XPE的散安装,若用于其它安装,可作适当修改.
Title=安装XPE硬盘版
:begin
cls
COLOR 2F
echo.
echo.
echo XPE硬盘安装版
echo ==============================================
echo.
echo 即将安装“小型XPE 硬盘版”到您的系统!
echo 本安装程序不会修改系统 MBR 及分区表等信息。
echo.
Echo 请按任意键开始安装......
PAUSE >NUL
CLS
Set RP=RP
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 If Exist %%I:\BOOT.INI Set RP=%%I
If %RP%==RP Goto Exit
FIND "Avldr.xpe" %RP%:\BOOT.INI >NUL
If %Errorlevel%==0 Goto Err1
:Install
If Exist %RP%:\AVLDR.XPE ATTRIB -S -H -R %RP%:\AVLDR.XPE
If Exist %RP%:\LDRXPE ATTRIB -S -H -R %RP%:\LDRXPE
Echo.
Echo 正在复制文件,请稍候 ......
Copy ..\WIN51IP %RP%:\ >NUL 2>nul
Copy ..\WIN51IP.SP2 %RP%:\ >NUL 2>nul
Copy AVLDR.XPE %RP%:\ /Y>NUL
Copy LDRXPE %RP%:\ /Y>NUL
if not exist %RP%:\MININT\nul md %RP%:\MININT>NUL 2>nul
xcopy /y /r /e /q /h ..\I386\*.* %RP%:\MININT\>NUL 2>nul
cd %RP%:\>layout_.inf
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%RP%:\MININT\INF\LAYOUT.INF) do (
set var=%%i
set "var=!var:\i386=\MININT!"
echo !var!>>layout_.inf
)
Copy %RP%:\layout_.inf %RP%:\MININT\INF\LAYOUT.INF /Y>NUL
Del %RP%:\layout_.inf /Q
cd %RP%:\>PECONFIG_.INI
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%RP%:\MININT\SYSTEM32\PECONFIG.INI) do (
set var=%%i
set "var=!var:i386=MININT!"
echo !var!>>PECONFIG_.INI
)
Copy %RP%:\PECONFIG_.INI %RP%:\MININT\SYSTEM32\PECONFIG.INI /Y>NUL
Del %RP%:\PECONFIG_.INI /Q
ATTRIB -S -H -R %RP%:\BOOT.INI
If Exist %RP%:\BOOT.BAK (
ATTRIB -S -H -R %RP%:\BOOT.BAK
Del %RP%:\BOOT.BAK /Q
)
Copy %RP%:\BOOT.INI %RP%:\BOOT.BAK>NUL
TYPE %RP%:\BOOT.BAK|FIND /V "Avldr">%RP%:\BOOT.INI
Echo %RP%:\Avldr.xpe="启动WinPE系统">>%RP%:\BOOT.INI
if not exist %RP%:\PROGRAMS\nul md %RP%:\PROGRAMS>NUL 2>nul
xcopy /y /e /q /h ..\PROGRAMS\*.* %RP%:\PROGRAMS\>NUL 2>nul
ATTRIB +S +H +R %RP%:\AVLDR.XPE
ATTRIB +S +H +R %RP%:\LDRXPE
ATTRIB +S +H +R %RP%:\BOOT.INI
ATTRIB +S +H +R %RP%:\BOOT.BAK
ATTRIB +S +H +R %RP%:\WIN51IP
ATTRIB +S +H +R %RP%:\WIN51IP.SP2
ATTRIB +S +H +R %RP%:\PROGRAMS /D /S
ATTRIB +S +H +R %RP%:\MININT /D /S
Goto SUCCESS
:Err1
CLS
Echo 好像你的机器中已经安装了 WinPE 了,请选择以下操作选项。
Echo.
Echo 1.卸载原有的 WinPE,并且重新安装。
Echo 2.退出安装
Echo.
Set Choice=
Set /P Choice=请选择要进行的操作 (1/2) ,然后按回车:
If Not '%Choice%'=='' SET Choice=%Choice:~0,1%
CLS
If /I '%Choice%'=='1' GOTO Install
If /I '%Choice%'=='2' EXIT
Goto Err1
:Exit
CLS
Echo 好像你的机器中没有安装操作系统哦,请确认后再执行本安装程序。
Echo.
Echo 请按任意键退出......
PAUSE >NUL
Exit
:SUCCESS
CLS
Echo 已经成功将WinPE安装到你的 %RP%: 盘。
Echo.
Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK。
Echo.
Echo 请按任意键退出......
PAUSE >NUL
Exit
以上是我的全部批处理内容,不将光盘内容做成ISO,而是解开在硬盘,运行这个批处理是可以的,一旦做成ISO用虚拟光盘来加载运行批处理时,就会出现拒绝访问的滚动提示.可能是要写东西在这个ISO中的原因,但我不会弄,再帮看一下.
作者: namejm
时间: 2006-9-19 06:34
请问:你的ISO文件里是不是有boot.ini文件?如果有的话,那就会运行不成功,原因在这一句上: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 If Exist %%I:\BOOT.INI Set RP=%%I 。
请注意,此for语句会把RP值设置为存在boot.ini文件的
最后一个分区的盘符,而不是你想要的
第一个。假设在你的ISO文件下存在boot.ini,那么,你把ISO文件加载到虚拟光盘中去之后,该虚拟光盘盘符下就存在了boot.ini,那么,RP的值就是该虚拟光盘的盘符了,你以后的很多操作都是针对RP展开的,所以会出现拒绝访问的提示了。
作者: tclshx
时间: 2006-9-19 07:18
Quote: |
Originally posted by namejm at 2006-9-19 06:34 AM:
请问:你的ISO文件里是不是有boot.ini文件?如果有的话,那就会运行不成功,原因在这一句上: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 If ... |
|
ISO里是没有BOOT.INI的
是以下语句的问题,我把这两个修改文件的语句去掉后就不会出"现拒绝访问"的提示了,但我对这种高难度的语句不懂.
cd %RP%:\>layout_.inf
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%RP%:\MININT\INF\LAYOUT.INF) do (
set var=%%i
set "var=!var:\i386=\MININT!"
echo !var!>>layout_.inf
)
Copy %RP%:\layout_.inf %RP%:\MININT\INF\LAYOUT.INF /Y>NUL
Del %RP%:\layout_.inf /Q
cd %RP%:\>PECONFIG_.INI
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%RP%:\MININT\SYSTEM32\PECONFIG.INI) do (
set var=%%i
set "var=!var:i386=MININT!"
echo !var!>>PECONFIG_.INI
)
Copy %RP%:\PECONFIG_.INI %RP%:\MININT\SYSTEM32\PECONFIG.INI /Y>NUL
Del %RP%:\PECONFIG_.INI /Q
[
Last edited by tclshx on 2006-9-19 at 07:28 ]
作者: tclshx
时间: 2006-9-19 11:50
我试过将修改文件的语句单独做成一个01.BAT,在主批处理中将它COPY到硬盘,目的是它可利用硬盘的写入功能,这样就可在主批处理中用CALL调用01.BAT,执行完01.BAT后又返回主批处理的下续语句,但结果还是不行,不知为什么.若将01.BAT放在硬盘(C盘)中单独运行又是好的,怪了!!
作者: namejm
时间: 2006-9-19 11:55
呵呵,发现你copy代码的时候,写错了两处,一处是cd
%RP%:\>layout_.inf,另一处是cd
%RP%:\>PECONFIG_.INI,而我的原始代码中是cd
.>layout_.inf和cd
.>PECONFIG_.INI,这两句的意思是创建0字节的layout_.inf和PECONFIG_.INI,请注意 cd 之后紧跟着的是一个圆点。
[
Last edited by namejm on 2006-9-19 at 11:57 ]
作者: tclshx
时间: 2006-9-19 12:27
以下的代码修改文件是原来未动的,做成ISO运行也不行.
@echo OFF
REM 此批处理要和XCOPY.EXE等DOS文件同放在根目录中的一个文件夹内,此批处理适用于老九
的64M_XPE的散安装,若用于其它安装,可作适当修改.
Title=安装XPE硬盘版
:begin
cls
COLOR 2F
echo.
echo.
echo XPE硬盘安装版
echo ==============================================
echo.
echo 即将安装“小型XPE 硬盘版”到您的系统!
echo 本安装程序不会修改系统 MBR 及分区表等信息。
echo.
Echo 请按任意键开始安装......
PAUSE >NUL
CLS
Set RP=RP
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 If Exist %%I:\BOOT.INI Set RP=%%I
If %RP%==RP Goto Exit
FIND "Avldr.xpe" %RP%:\BOOT.INI >NUL
If %Errorlevel%==0 Goto Err1
:Install
If Exist %RP%:\AVLDR.XPE ATTRIB -S -H -R %RP%:\AVLDR.XPE
If Exist %RP%:\LDRXPE ATTRIB -S -H -R %RP%:\LDRXPE
Echo.
Echo 正在复制文件,请稍候 ......
Copy ..\WIN51IP %RP%:\ >NUL 2>nul
Copy ..\WIN51IP.SP2 %RP%:\ >NUL 2>nul
Copy AVLDR.XPE %RP%:\ /Y>NUL
Copy LDRXPE %RP%:\ /Y>NUL
if not exist %RP%:\MININT\nul md %RP%:\MININT>NUL 2>nul
xcopy /y /r /e /q /h ..\I386\*.* %RP%:\MININT\>NUL 2>nul
cd.>layout_.inf
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%RP%:\MININT\INF\LAYOUT.INF) do (
set var=%%i
set "var=!var:\i386=\MININT!"
echo !var!>>layout_.inf
)
cd.>PECONFIG_.INI
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%RP%:\MININT\SYSTEM32\PECONFIG.INI) do (
set var=%%i
set "var=!var:i386=MININT!"
echo !var!>>PECONFIG_.INI
)
ATTRIB -S -H -R %RP%:\BOOT.INI
If Exist %RP%:\BOOT.BAK (
ATTRIB -S -H -R %RP%:\BOOT.BAK
Del %RP%:\BOOT.BAK /Q
)
Copy %RP%:\BOOT.INI %RP%:\BOOT.BAK>NUL
TYPE %RP%:\BOOT.BAK|FIND /V "Avldr">%RP%:\BOOT.INI
Echo %RP%:\Avldr.xpe="启动WinPE系统">>%RP%:\BOOT.INI
if not exist %RP%:\PROGRAMS\nul md %RP%:\PROGRAMS>NUL 2>nul
xcopy /y /e /q /h ..\PROGRAMS\*.* %RP%:\PROGRAMS\>NUL 2>nul
ATTRIB +S +H +R %RP%:\AVLDR.XPE
ATTRIB +S +H +R %RP%:\LDRXPE
ATTRIB +S +H +R %RP%:\BOOT.INI
ATTRIB +S +H +R %RP%:\BOOT.BAK
ATTRIB +S +H +R %RP%:\WIN51IP
ATTRIB +S +H +R %RP%:\WIN51IP.SP2
ATTRIB +S +H +R %RP%:\PROGRAMS /D /S
ATTRIB +S +H +R %RP%:\MININT /D /S
Goto SUCCESS
:Err1
CLS
Echo 好像你的机器中已经安装了 WinPE 了,请选择以下操作选项。
Echo.
Echo 1.卸载原有的 WinPE,并且重新安装。
Echo 2.退出安装
Echo.
Set Choice=
Set /P Choice=请选择要进行的操作 (1/2) ,然后按回车:
If Not '%Choice%'=='' SET Choice=%Choice:~0,1%
CLS
If /I '%Choice%'=='1' GOTO Install
If /I '%Choice%'=='2' EXIT
Goto Err1
:Exit
CLS
Echo 好像你的机器中没有安装操作系统哦,请确认后再执行本安装程序。
Echo.
Echo 请按任意键退出......
PAUSE >NUL
Exit
:SUCCESS
CLS
Echo 已经成功将WinPE安装到你的 %RP%: 盘。
Echo.
Echo 系统分区中的 BOOT.INI 备份为 BOOT.BAK。
Echo.
Echo 请按任意键退出......
PAUSE >NUL
Exit
作者: namejm
时间: 2006-9-20 00:32
昨天看帖匆忙,忘记了一个最关键的问题:我那个代码是在当前目录下生成layout_.inf和PECONFIG_.INI的,所以,当把它放到光盘上或者做成ISO加载到虚拟光驱中之后,由于光驱(盘)的只读属性,它不能在当前目录下生成那两个文件。解决办法是把这两个文件放到临时文件中去:把所有的layout_.inf和PECONFIG_.INI替换成%tmp%\layout_.inf和%tem%\PECONFIG_.INI就可以了。
作者: tclshx
时间: 2006-9-20 03:17
Quote: |
Originally posted by namejm at 2006-9-20 12:32 AM:
昨天看帖匆忙,忘记了一个最关键的问题:我那个代码是在当前目录下生成layout_.inf和PECONFIG_.INI的,所以,当把它放到光盘上或者做成ISO加载到虚 ... |
|
我昨晚试过了,使用临时文件夹,它也非要在这个批处理所在的文件夹内生成一个0字节的文件,所以做成ISO后运行时还是有"拒绝访问"的滚动提示.
除非还有其它修改或替换字符的方法.
作者: namejm
时间: 2006-9-20 06:23
很明显,还有其他语句对当前的文件进行了改动操作,那你检查一下,看是否还存在在当前目录及其子目录下写入文件的语句,有的话统统写到临时文件夹下去就可以解决了;包括对当前目录下文件的重命名、增减属性等操作。