找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19433|回复: 8

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

[复制链接]
发表于 2023-9-17 06:47:55 | 显示全部楼层 |阅读模式
  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重新保存,也不合格,无法导入。
有人有办法解决吗?
发表于 2023-9-17 10:01:45 | 显示全部楼层
不能用变量延迟可以试试这样
  1. call set s=%%s%%;%%a\%%b\%%c
复制代码
还有%SystemRoot%是REG_EXPAND_SZ类型的数据,在注册表文件中要是hexadecimal(2)类型的,
应该先把%%SystemRoot%%\inf%s%转十六进制,"DevicePath"=hex(2):
发表于 2023-9-17 10:08:40 | 显示全部楼层
回复 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:48 | 显示全部楼层
回复 2# buyiyang


    regedit5才是,4不是。
 楼主| 发表于 2023-9-17 11:26:00 | 显示全部楼层
回复 3# Batcher


    稍候试试看再来汇报。
发表于 2023-9-18 11:46:53 | 显示全部楼层
DOS下for /f 不起作用吧
 楼主| 发表于 2023-9-18 18:11:32 | 显示全部楼层
批处理没问题,但是98的msdos下不行,可能就是/f不行?或者是括号起来>到文本不行?
发表于 2023-9-18 18:23:51 | 显示全部楼层
回复 7# 窄口牛


    for /f 和 set /p 在CMD下面可以,但是DOS系统里面没有这种语法。
 楼主| 发表于 2023-9-18 18:47:34 | 显示全部楼层
嗯,只能先在别的系统里收集,再在win98环境下建注册表。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 13:19 , Processed in 0.015709 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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