![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 00:56 |
共 47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【求助】无法引用路径(新手) |
| 可打印版本 843 / 9 |
| 第1楼 zxh17173 | 发表于 2008-10-12 22:01 |
| 初级用户 发帖 20 积分 33 | |
|
【求助】无法引用路径(新手) 源代码如下
@echo off echo Path=D:\>test.txt echo Silent=^2>>test.txt echo Overwrite=^1>>test.txt echo Shortcut=D, "桌面", "\", "桌面", "桌面">>test.txt start /wait winrar.exe a -r -ep1 -m1 -sfx -ztest.txt test.exe %SystemRoot%\system.ini start /wait test.exe for /f "tokens=1* delims== " %%i in ('wmic /namespace:\\root\default path stdregprov call getstringvalue ^^^&h80000001^,"Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^,"desktop"^|findstr /i "sValue"') do move %%j\桌面.lnk "%USERPROFILE%\SendTo" del test.* pause 将move %%j\桌面.lnk "%USERPROFILE%\SendTo" 替换为echo %%j 可以显示路径 PS:代码大部分是老帖子里抄来的,模模糊糊有点明白,希望高人指点一下~~ 现在郁闷中~~~ |
|
| 第2楼 pooronce | 发表于 2008-10-12 22:05 |
| 中级用户 发帖 250 积分 484 | |
|
路径有空格
记住在一切可能有空格,或怀疑会有空格的地方用引号括住 |
|
| 第3楼 zxh17173 | 发表于 2008-10-12 22:11 |
| 初级用户 发帖 20 积分 33 | |
Originally posted by pooronce at 2008-10-12 22:05: 哪里的路径啊? 我现在郁闷的就是这条 do move "%%j\桌面.lnk" "%USERPROFILE%\SendTo" 不能执行啊~~这个路径加了引号也没用啊 |
|
| 第4楼 HAT | 发表于 2008-10-12 22:18 |
| 版主 发帖 5,017 积分 9,023 | |
|
运行这个代码,把结果贴出来看看:
|
|
| 第5楼 zxh17173 | 发表于 2008-10-12 22:34 |
| 初级用户 发帖 20 积分 33 | |
|
太感谢了~~
版主的代码不用了~~ 刚才又仔细回想了下,原来我上面引用的地址实际上是("D:\桌面";\桌面.lnk) ~~ |
|
| 第6楼 zxh17173 | 发表于 2008-10-12 22:44 |
| 初级用户 发帖 20 积分 33 | |
|
最终代码如下:
@echo off echo Path=D:\>test.txt echo Silent=^2>>test.txt echo Overwrite=^1>>test.txt echo Shortcut=D, "桌面", "\", "桌面", "桌面">>test.txt start /wait winrar.exe a -r -ep1 -m1 -sfx -ztest.txt test.exe %SystemRoot%\system.ini start /wait test.exe for /f "tokens=3" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop^|findstr "Desktop"') do @set "deskpath=%%i" move "%deskpath%面\桌面.lnk" "%USERPROFILE%\SendTo" del test.* pause 哎~~还是那个XP注册表读出来会少一个“面”字,只有人工补了个“面” 貌似没有问题 |
|
| 第7楼 HAT | 发表于 2008-10-13 10:11 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 6楼 XP SP2系统中的reg.exe有bug,当reg query遇到中文字符时可能会"吃字符",详见http://www.cn-dos.net/forum/viewthread.php?tid=22202
解决方案如下: 1. 用XP SP2以上的版本的操作系统(XP SP3/2003/Vista等)中的reg.exe来替换XP SP2中文版的reg.exe 2. 调用VBS读注册表,并把返回结果传递给BAT 3. 用reg export把注册表项导出到一个临时文件,再搜索该文件,值得注意的是reg export导出的文件是Unicode编码格式,可以使用type命令进行处理 reg.exe of WinXP SP3 CS Pro http://upload.cn-dos.net/img/867.zip |
|
| 第8楼 zxh17173 | 发表于 2008-10-13 14:35 |
| 初级用户 发帖 20 积分 33 | |
|
感谢版主啊~~
我今天刚好拿到一太集成SP3的系统~~ 结果就运行不了 有没有办法让BAT识别系统版本啊~~ |
|
| 第9楼 zxh17173 | 发表于 2008-10-13 14:40 |
| 初级用户 发帖 20 积分 33 | |
|
识别后然后用if 怎么用?
我今天试了好几次,都没有效果~ |
|
| 第10楼 HAT | 发表于 2008-10-13 15:06 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 8楼 通过systeminfo命令的返回结果可以判断系统版本,你自己先试着写一下吧,有问题再问。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |