Board logo

标题: [注册表类] 想给win98离线添加个驱动安装搜索路径,批处理写出来了,但用不了 [打印本页]

作者: 窄口牛    时间: 2023-9-17 06:47     标题: 想给win98离线添加个驱动安装搜索路径,批处理写出来了,但用不了

  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /f "delims=\ tokens=1,2,3,4" %%a in ('dir /s N:\DrvPath\*.inf /b') do (
  4. set s=!s!;%%a\\%%b\\%%c)
  5. echo,regedit4>>drv.reg
  6. echo,>>drv.reg
  7. echo,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]>>drv.reg
  8. echo,>>drv.reg
  9. echo,"DevicePath"="%%SystemRoot%%\inf!s!">>drv.reg
复制代码
win98的DOS没有变量延迟,所以无法在98系统使用;在别的系统下(如xp)可以输出出来reg,但是不合法,再用edit重新保存,也不合格,无法导入。
有人有办法解决吗?
作者: buyiyang    时间: 2023-9-17 10:01

不能用变量延迟可以试试这样
  1. call set s=%%s%%;%%a\%%b\%%c
复制代码
还有%SystemRoot%是REG_EXPAND_SZ类型的数据,在注册表文件中要是hexadecimal(2)类型的,
应该先把%%SystemRoot%%\inf%s%转十六进制,"DevicePath"=hex(2):
作者: Batcher    时间: 2023-9-17 10:08

回复 1# 窄口牛


不需要变量延迟扩展.bat
  1. @echo off
  2. (for /f "tokens=1,2,3,4 delims=\" %%a in ('dir /b /s /a-d "N:\DrvPath\*.inf"') do (
  3.     set /p =;%%a\\%%b\\%%c<nul
  4. ))>"%temp%\1.txt"
  5. set /p s=<"%temp%\1.txt"
  6. >drv.reg echo,regedit4
  7. >>drv.reg echo,
  8. >>drv.reg echo,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
  9. >>drv.reg echo,
  10. >>drv.reg echo,"DevicePath"="%%SystemRoot%%\inf%s%"
复制代码

作者: 窄口牛    时间: 2023-9-17 11:24

回复 2# buyiyang


    regedit5才是,4不是。
作者: 窄口牛    时间: 2023-9-17 11:26

回复 3# Batcher


    稍候试试看再来汇报。
作者: terse    时间: 2023-9-18 11:46

DOS下for /f 不起作用吧
作者: 窄口牛    时间: 2023-9-18 18:11

批处理没问题,但是98的msdos下不行,可能就是/f不行?或者是括号起来>到文本不行?
作者: Batcher    时间: 2023-9-18 18:23

回复 7# 窄口牛


    for /f 和 set /p 在CMD下面可以,但是DOS系统里面没有这种语法。
作者: 窄口牛    时间: 2023-9-18 18:47

嗯,只能先在别的系统里收集,再在win98环境下建注册表。




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