Board logo

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

作者: solan    时间: 2015-7-13 15:41     标题: 【已解决】批处理如何把另外文件夹里面的一个文件写入注册表?

本帖最后由 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
复制代码

作者: solan    时间: 2015-7-13 15:49

上面的最好用delims=\  
但是要删除最后一个元素不知道怎么写
作者: pcl_test    时间: 2015-7-13 16:49

本帖最后由 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
复制代码

作者: kingshui    时间: 2015-7-13 17:00

  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
复制代码

作者: solan    时间: 2015-7-13 17:24

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

本帖最后由 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
复制代码

作者: solan    时间: 2015-7-13 17:38

回复 4# kingshui

今天又学了两个绝招,你的代码测试也通过,不过那个5要根据实际情况改一下就行了,谢谢
作者: solan    时间: 2015-7-13 17:55

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

我自己的代码经过修改,测试通过:
  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
复制代码

作者: solan    时间: 2015-7-13 20:30

回复 6# pcl_test

我看不懂,能不能像3楼那样写得完整些呢?麻烦您了
作者: /zhqsystem/zhq    时间: 2015-7-13 22:15

本帖最后由 /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 /?
作者: solan    时间: 2015-7-14 08:05

回复 11# /zhqsystem/zhq
谢谢,我现在知道了,原来pcl想让我看看提取出来的路径是啥样的,这样我会写了
作者: solan    时间: 2015-7-14 08:20

按照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
复制代码
测试通过!
作者: solan    时间: 2015-7-14 08:27

不过有个疑问,for语句里经常出现dir /b /s   和dir /ad /b /s   还有dir /a-d /b
这些有什么区别,具体怎么用的?请教各位了。
作者: pcl_test    时间: 2015-7-14 11:53

回复 14# solan

dir /?




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