Board logo

标题: 求助! 关于 xp的桌面变量,在桌面做快捷方式。。 [打印本页]

作者: iovf     时间: 2006-10-19 09:57    标题: 求助! 关于 xp的桌面变量,在桌面做快捷方式。。

想弄个自动给桌面添加快捷方式的批处理。
中文版本桌面是 桌面
韩文版是 바탕 화면

:( 都用desktop好了。。恨微软。
现在的想法是这样的
注册表中
HKLM\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}
里面有个桌面的名字
reg EXport HKLM\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046} TEMP.REG
REN TEMP.REG TEMP_BAK.REG
TYPE TEMP_BAK.REG >TEMP.TXT
DEL TEMP_BAK.REG
TEMP.TXT 的内容是
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}]
@="桌面"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}\InProcServer32]
@="shell32.dll"
"ThreadingModel"="Apartment"
以下省略
如何把@="桌面"
中的两个"符号内的文字
弄到一个变量中。。

请大家帮帮忙!!

[ Last edited by namejm on 2006-10-22 at 06:46 ]
作者: lxmxn     时间: 2006-10-19 11:03

@ECHO OFF
FOR /F "TOKENS=2 DELIMS==" %%I IN ('FIND /I "桌面" TEMP.TXT') DO (
ECHO %%I
PAUSE)  
  代码未测试,有问题请跟帖。

作者: NaturalJ0     时间: 2006-10-19 21:52
算是完成功能了,但我还是不太满意,看看其他高人的。
看有没办法不生成临时文件 temp.reg ,有没办法不使用额外的中间变量 skipline 。
为了确保不出错,用的方法是:定位 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}] 所在行,然后从它的下一行取。
@echo off
reg EXport HKLM\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046} temp.reg >nul
for /f "delims=[]" %%i in ('find/n "[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00021400-0000-0000-C000-000000000046}]" temp.reg') do set skipline=%%i
for /f "skip=%skipline% tokens=2 delims==" %%a in ('type temp.reg') do ( echo %%~a & GOTO OUT )
:OUT
del temp.reg
pause>nul
[ Last edited by NaturalJ0 on 2006-10-19 at 23:12 ]
作者: iovf     时间: 2006-10-20 10:31
2楼。
中文版通过。
其他语言版本的。。。。
韩文版的,里面带有空格的。。

还是谢谢大家!!
作者: lxmxn     时间: 2006-10-20 10:33
  呵呵,我没有说明啊,我的测试环境是WindowsXP SP2中文版的,不知道你是什么版本的。
作者: iovf     时间: 2006-10-22 04:32
我的是 Server2003 SP1 韩文版
XP SP2 中文版
3楼的代码可以了:)
谢谢!!
作者: lxmxn     时间: 2006-10-22 05:54

  呵呵,我的代码中有一个"('FIND /I "桌面" TEMP.TXT')",里面有中文字符“桌面”,对于韩文版的系统当然不行咯。。。

  还是NaturalJ0兄在F3中的代码比较通用。