无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4626|回复: 12
打印 上一主题 下一主题

(求助)请高手帮忙改造这个CMD批处理使得能在MSDOS下运行

[复制链接]
跳转到指定楼层
1#
发表于 2010-4-3 17:06:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的批处理能在NT下运行,高手看看能不能改造使得它能在MSDOS下运行
主要是FOR /F
可以使用DOS下能用的第三方程序。

@ECHO OFF
CLS
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
:: Give NT5.X Source Directory with Location of DOSNET.INF
SET ntsource=
SET bttarget=
SET btdir=$WIN_NT$.~BT
::SET btdir=XPBT
IF "%btdir%" == "" (
        echo.
        echo  Bootfolder Name NOT Valid
        echo.
goto _end_quit
)
:_main
ECHO.
ECHO  MAKEBT.cmd Batch Program for Windows NT5.X
echo.
echo  Parse DOSNET.INF for making Windows NT5.X Setup Bootfolder $WIN_NT$.~BT
echo.
echo     1) Change Windows NT5.X Source Path  , currently [%ntsource%]
echo.
echo     2) Change Destination Directory   , currently [%bttarget%]
echo.
echo     3) Make Target Windows NT5.X Setup Bootfolder %btdir%
echo.
echo     Q) Quit
echo.
set _ok=
set /p _ok= Enter your choice:
if "%_ok%" == "1" goto _getsrc
if "%_ok%" == "2" goto _gettmp
if "%_ok%" == "3" goto _mktemp
if /I "%_ok%" == "q" goto _end_quit
ECHO.
ECHO ***** NOT in Menu - Wrong Selection - Try Again *****
ECHO.
pause
goto :_main
:_getsrc
set src_ok=
echo.
echo  Please give the location to your Windows NT5.X Source Files
ECHO  e.g if you have C:\ntsource\I386 type C:\ntsource
ECHO.
set /p src_ok= Enter Source path:
ECHO %src_ok%|FIND " "
IF "%ERRORLEVEL%"=="0" (
  echo.
  echo  ***** Error: Selected Path does Contain Spaces and is Invalid *****
  echo.
  echo     Solution: Rename Folder or Change to Path without Spaces
  echo.
  pause
  goto _main
)

if exist %src_ok%\i386\nul (
        SET ntsource=%src_ok%
) else (
echo.
echo  Error: The path %src_ok% does not contain Windows NT5.X Source Files
        echo.
pause
)
goto _main
:_gettmp
set _ok=
echo.
echo  Give Target Directory Path for making Windows NT5.X Setup Bootfolder %btdir%
ECHO.
set /p _ok= Enter Target Directory Path:
if exist !_ok!\nul (
  SET bttarget=!_ok!
  if EXIST !bttarget!\%btdir%\nul (
        echo.
echo  ***** WARNING Existing NT5.X Bootfolder %btdir% Detected   *****
        echo  ***** Files will be Replaced when Making %btdir% Folder *****
        echo.
pause
  )
) ELSE (
  echo  Directory Path !_ok! Does NOT Exists, Make Selection Again
  echo.
  pause
)
goto _main
:_mktemp
IF "%ntsource%" == "" (
        echo  Please give first valid NT5.X Source Path
        echo.
pause
goto _main
)
IF "%bttarget%" == "" (
        echo  Please give first valid Destination Directory
        echo.
pause
goto _main
)
:: Make Destination directories for NT5.X Setup Bootfolder
IF NOT EXIST %bttarget%\%btdir%\nul MD %bttarget%\%btdir%
IF NOT EXIST %bttarget%\%btdir%\system32\nul MD %bttarget%\%btdir%\system32

SET cpyflag=0
FOR /F "tokens=1,2,3* delims=, " %%G IN (%ntsource%\I386\DOSNET.INF) DO (
  SET FTAG=%%G
  SET FTAG=!FTAG:~0,13!
  IF "!FTAG!"=="[FloppyFiles." (
    SET cpyflag=1
    IF "%%G"=="[FloppyFiles.x]" SET cpyflag=0
  ) ELSE (
    SET FTAG=!FTAG:~0,1!
    IF "!FTAG!"=="[" SET cpyflag=0
    IF "!cpyflag!"=="1" (
      SET btfile=%%H
      IF "%%I"=="" (
         SET btfile=!btfile:~0,-1!*
         xcopy %ntsource%\I386\!btfile! %bttarget%\%btdir% /i /k /y /h
      ) ELSE (
         copy /y %ntsource%\I386\%%H %bttarget%\%btdir%\%%I
      )
    )
  )
)
ECHO.
ECHO  Making Windows NT5.X Setup Bootfolder %bttarget%\%btdir% - READY
GOTO :_end_quit
:Syntax
ECHO.
ECHO  BT_folder.cmd,  Version 1.0 for Windows NT5.X
ECHO.
ECHO  Parse DOSNET.INF for making Windows NT5.X Setup Bootfolder $WIN_NT$.~BT
ECHO.
:_end_quit
ECHO.
ECHO  End BT_folder.cmd Batch Program
ECHO.
pause
EXIT

[ 本帖最后由 zhaohj 于 2010-4-3 17:30 编辑 ]
2#
发表于 2010-4-3 18:57:19 | 只看该作者
原帖由 zhaohj 于 2010-4-3 17:06 发表
下面的批处理能在NT下运行,高手看看能不能改造使得它能在MSDOS下运行
主要是FOR /F
可以使用DOS下能用的第三方程序。

@ECHO OFF
CLS
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
::  ...



pm紫狐版主试试....................
回复

使用道具 举报

3#
发表于 2010-4-3 19:11:15 | 只看该作者
那和直接启动winnt.exe 有什么区别?
回复

使用道具 举报

4#
发表于 2010-4-3 19:14:45 | 只看该作者
原帖由 dvd008 于 2010-4-3 19:11 发表
那和直接启动winnt.exe 有什么区别?



快许多......................................
回复

使用道具 举报

5#
发表于 2010-4-3 19:36:40 | 只看该作者
不会吧,dos下,复制速度差不多,开了 smartdrv 我以前安装过
win2000,winxp 都弄过

记得复制过程分两次
回复

使用道具 举报

6#
 楼主| 发表于 2010-4-3 22:49:45 | 只看该作者
速度肯定快很多,.~LS就复制整个I386到目录下就可以了。
顶上去,顶出高手来。
回复

使用道具 举报

7#
发表于 2010-4-4 12:01:55 | 只看该作者
要改成纯DOS下用,可能会很麻烦的. SET命令部分的使用就得改写,这只是一部分,FOR的更不用说了.
回复

使用道具 举报

8#
 楼主| 发表于 2010-4-4 13:33:51 | 只看该作者
inifile、lmod配合可以做到,但这个命令我不熟练。

[ 本帖最后由 zhaohj 于 2010-4-4 13:58 编辑 ]
回复

使用道具 举报

9#
 楼主| 发表于 2010-4-6 16:33:44 | 只看该作者
下面的脚步修改方便了

type "%src_dir%\TXTSETUP.SIF" | findstr /r ",_[1-9] ,[1-9]_" | sed -e s/"=.*"/""/g -e s/" .*"/""/g > out.txt
type out.txt | sed -e s/".$"/"_"/g > out_.txt

mkdir "%dest_dir%"

for /f %%i in ('type out.txt') do copy "%src_dir%\%%i" "%dest_dir%" > nul 2>&1
for /f %%i in ('type out_.txt') do copy "%src_dir%\%%i" "%dest_dir%" > nul 2>&1
回复

使用道具 举报

10#
发表于 2010-4-6 17:07:04 | 只看该作者
但是在纯DOS下还不行吧.
回复

使用道具 举报

11#
发表于 2010-4-9 09:57:37 | 只看该作者
这个脚本用了太多 cmd 下的 默认系统变量,而dos下是没有的。而且还涉及到 dos对ntfs 分区读写的问题。
回复

使用道具 举报

12#
 楼主| 发表于 2010-4-9 12:11:22 | 只看该作者
也没很复杂的。
用INIFILE获取[FloppyFiles.0]~[FloppyFiles.3]
再用LMOD适当处理一下。

问题的关键是inifile有60KB的限制,还没找到能取代inifile的软件。

[ 本帖最后由 zhaohj 于 2010-4-9 14:17 编辑 ]
回复

使用道具 举报

13#
发表于 2010-11-28 12:11:24 | 只看该作者
这里我编辑了一个  inifile 脚本,用来修改 ini文件中特定项目的值。不知道能不能帮上忙。用来替代INIFILE程序。
脚本: inifile.rar (467 Bytes, 下载次数: 25)
awk: AWK.rar (32.39 KB, 下载次数: 21)

用法:
inifile TCPIP LANABASE "192 168 1 236" PRO.INI PRO2.INI
表示将 PRO.INI 中 [TCPIP] 项目中的 LANABASE 的值修改成 "192 168 1 236" 并输出到 PRO2.INI 中。

相应的 读取功能,只要稍作修改即可。
具体看:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158648&page=7#pid2097467

[ 本帖最后由 dos时代菜鸟 于 2010-11-28 17:32 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-5 08:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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