Board logo

标题: [其他] [求助]为何PE中批处理位置对运行结果有影响 [打印本页]

作者: crist    时间: 2014-2-20 10:28     标题: [求助]为何PE中批处理位置对运行结果有影响

本帖最后由 crist 于 2014-2-20 15:37 编辑

偶然发现在pe中,同样的批处理,放在光盘(iso镜像虚拟盘)、pe系统盘(ramdisk虚拟盘)运行都能顺利执行各项命令,但存放到本地磁盘运行却会出错。不知是什么原因呢?
  1. @echo off
  2. pushd %~dp0
  3. title %~n0
  4. color 0a
  5. 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 (
  6. IF EXIST %%I:\BOOT\FINDSTR.EXE IF NOT EXIST %SYSTEMROOT%\SYSTEM32\FINDSTR.EXE COPY /Y %%I:\BOOT\FINDSTR.EXE %SYSTEMROOT%\SYSTEM32\ >NUL 2>NUL
  7. IF EXIST %%I:\BOOT\FORMAT.COM IF NOT EXIST %SYSTEMROOT%\SYSTEM32\FORMAT.COM COPY /Y %%I:\BOOT\FORMAT.COM %SYSTEMROOT%\SYSTEM32\ >NUL 2>NUL
  8. IF EXIST %%I:\BOOT\UREG.DLL IF NOT EXIST %SYSTEMROOT%\SYSTEM32\UREG.DLL COPY /Y %%I:\BOOT\UREG.DLL %SYSTEMROOT%\SYSTEM32\ >NUL 2>NUL
  9. IF EXIST %%I:\BOOT\MODE.COM IF NOT EXIST %SYSTEMROOT%\SYSTEM32\MODE.COM COPY /Y %%I:\BOOT\MODE.COM %SYSTEMROOT%\SYSTEM32\ >NUL 2>NUL
  10. IF EXIST "%SYSTEMROOT%\SYSTEM32\UREG.DLL" IF EXIST "%SYSTEMROOT%\SYSTEM32\MODE.COM" MODE CON: COLS=75 LINES=25
  11. )
  12. CLS
  13. echo ---------------------------------------------------------------------------
  14. echo    全新安装: Windows XP Professional With SP3
  15. echo.
  16. echo    特别提示:1. 使用PE安装系统时本ISO镜像不可放于USB设备之中!
  17. echo              2. 必须在windows安装程序复制安装文件前拔出所有可存储USB设备!
  18. echo.     
  19. echo ---------------------------------------------------------------------------
  20. SET ST=
  21. SET /P ST=   是否安装 Windows XP [Y/N]:
  22. echo.
  23. if not "%ST%"=="" set ST=%ST:~0,1%
  24. if /I "%ST%"=="Y" goto ST
  25. if /I "%ST%"=="N" goto EX
  26. goto EX
  27. :ST
  28. if not exist ".\I386\WINNT32.EXE" echo            WINNT32安装文件丢失 & goto File_Missing
  29. cls
  30. echo ---------------------------------------------------------------------------
  31. echo    全新安装: Windows XP Professional With SP3
  32. echo.
  33. echo    特别提示:1. 使用PE安装系统时本ISO镜像不可放于USB设备之中!
  34. echo              2. 必须在windows安装程序复制安装文件前拔出所有可存储USB设备!
  35. echo.     
  36. echo ---------------------------------------------------------------------------
  37. SET /P drive_letter=   第一步,输入你需要安装 Windows XP 的目标分区(如C):
  38. echo.
  39. if /I "%drive_letter%"=="" goto ST
  40. if /I not "%drive_letter%"=="" set drive_letter=%drive_letter:~0,1%
  41. set CHS=
  42. set /p CHS=   第二步,是否自动格式化 %drive_letter% 盘[Y/N]:
  43. IF /I "%CHS%"=="Y" GOTO FM
  44. IF /I "%CHS%"=="N" GOTO IN
  45. :IN
  46. ECHO.
  47. echo    第三步,确认 %drive_letter% 盘已正确格式化并拔出U盘,按回车键开始复制安装文件
  48. pause>nul
  49. if not exist ".\I386\UNATTEND.TXT" echo            应答文件丢失 & goto File_Missing
  50. echo            请稍等,正在复制安装文件到 %drive_letter% 盘
  51. .\I386\WINNT32.EXE /SYSPART:%drive_letter%: /DUDISABLE /S:.\I386  /UNATTEND:.\I386\UNATTEND.TXT /MAKELOCALSOURCE /TEMPDRIVE:%drive_letter% /NOREBOOT
  52. cls
  53. echo ---------------------------------------------------------------------------
  54. echo    提示信息:
  55. echo              1. Windows安装文件复制完毕
  56. echo              2. windows安装程序将在重启后继续直至完成
  57. echo.
  58. echo ---------------------------------------------------------------------------
  59. set next=
  60. set /p next=   是否立即重启[Y/N]:
  61. if "%next%"=="" goto ex
  62. if not "%next%"=="" set next=%next:~0,1%
  63. if /I "%next%"=="Y" goto reboot
  64. if /I "%next%"=="N" goto ex
  65. goto EX
  66. :File_Missing
  67. echo            安装程序无法继续,按任意键退出. . .
  68. PAUSE>NUL
  69. GOTO EX
  70. :FM
  71. echo            正在格式化 %drive_letter% 盘,请稍候. . .
  72. FORMAT %drive_letter%: /FS:NTFS /Q /X /Y
  73. GOTO IN
  74. :reboot
  75. if exist %systemroot%\system32\shutdown.exe (
  76. shutdown -r -f -t 0 >nul 2>nul
  77. ) else (
  78. PECMD SHUT R >nul 2>nul
  79. )
  80. :EX
  81. exit
复制代码
目前发现当上述批处理保存在光盘或者pe的系统盘里面能顺利执行,但保存在本地磁盘时会出现无法正常格式化的现象
作者: DAIC    时间: 2014-2-20 12:10

完整代码贴出来看看




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2