[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 【已解决】批处理如何把另外文件夹里面的一个文件写入注册表?

本帖最后由 solan 于 2015-7-14 14:08 编辑

A文件夹有USB1和USB2两个子文件夹,其中USB1里面有一个1.ico图标文件,批处理在USB2里面。现在想用该批处理把1.ico及其详细路径注册到注册表的某个键之下,请教这个bat怎么写,请多提供一些方案来学习学习。
    由于这几天正在学习namejm写的教材《批处理 For 语句从入门到精通》,想写写看,结果无果
  1. @echo off
  2. @echo %cd%>1.txt
  3. for /f "delims=U" %%i in (1.txt) do echo %%i
  4. set ks=%%i
  5. reg add "某个注册表项" /ve /t REG_SZ /d "%ks%UBS1\1.ico,0" /f
  6. del 1.txt
  7. pause
复制代码

回复 14# solan

dir /?

TOP

不过有个疑问,for语句里经常出现dir /b /s   和dir /ad /b /s   还有dir /a-d /b
这些有什么区别,具体怎么用的?请教各位了。

TOP

按照pcl的意思,我这样写:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /s ..\UBS1\1.ico') do set "f=%%~dpa"
  3. reg add "某个注册表项" /ve /t REG_SZ /d "%f%1.ico,0" /f
  4. reg add "某个注册表项" /f /ve /t "REG_SZ" /d "\"%f%55.exe\" -ug -use_file_dir \"%%1\""
  5. pause
复制代码
测试通过!

TOP

回复 11# /zhqsystem/zhq
谢谢,我现在知道了,原来pcl想让我看看提取出来的路径是啥样的,这样我会写了

TOP

本帖最后由 /zhqsystem/zhq 于 2015-7-13 23:01 编辑

回复 10# solan


    pcl的意思是用for提取路径在用reg add添加此变量到注册表的值
添加键值
reg add "hkcu\........或HKLM等\主项名称" /v "键值名称(用于辨认和区分)" /t 有效值区分(reg_sz等) /d "\"路径""(如果是非字符串值别这么写) /f
添加空白值
reg add "hkcu\........或HKLM等\主项名称" /ve /t 有效值区分(reg_sz等) /d "\"路径""(如果是非字符串值别这么写) /f

不加入/t参数默认为reg_sz参数
详情查阅reg /?

TOP

回复 6# pcl_test

我看不懂,能不能像3楼那样写得完整些呢?麻烦您了

TOP

我自己的代码经过修改,测试通过:
  1. @echo off
  2. @echo %cd%>1.txt
  3. for /f "delims=U" %%i in (1.txt) do set “ks=%%i”
  4. reg add "某个注册表项" /ve /t REG_SZ /d "%ks%UBS1\1.ico,0" /f
  5. reg add "某个注册表项" /f /ve /t "REG_SZ" /d "\"%ks%USB1\55.exe\" -ug -use_file_dir \"%%1\""
  6. del 1.txt
  7. pause
复制代码

TOP

两位老师的两种不同写法都非常好,非常巧妙,同时我觉得for语句太高深莫测了;而4楼的写法却是通俗易懂,容易举一反三。两位都让我受益匪浅啊

TOP

回复 4# kingshui

今天又学了两个绝招,你的代码测试也通过,不过那个5要根据实际情况改一下就行了,谢谢

TOP

本帖最后由 pcl_test 于 2015-7-13 17:36 编辑

回复 5# solan
需要吗
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s /b ..\USB1\1.ico') do set "路径=%%~dpa"
  3. echo;%路径%
  4. pause
复制代码

TOP

回复 3# pcl_test
谢谢老大,这个测试通过。那如果在USB1里面还有一个55.exe也要加入注册表,终不能再写个for语句吧?

TOP

  1. @echo off
  2. set p=%~dp0
  3. set p=%p:~0,-5%
  4. reg add "某个注册表项" /vb /t REG_SZ /d "%p%USB1\1.ico" /f
复制代码

TOP

本帖最后由 pcl_test 于 2015-7-13 16:53 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s /b ..\USB1\1.ico') do set "f=%%a"
  3. reg add "某个注册表项" /ve /t REG_SZ /d "%f%,0" /f
  4. pause
复制代码

TOP

上面的最好用delims=\  
但是要删除最后一个元素不知道怎么写

TOP

返回列表