中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理变量中的空格问题 上一主题 | 下一主题
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『楼 主』:  批处理变量中的空格问题

想用Wfolder2自定义“我的文档”文件夹,批处理如下:

Wfolder2 "SET Folder=" "D:" "选择文件夹" > temp.bat
call temp.bat
del temp.bat
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Personal" /t REG_EXPAND_SZ /D %folder% /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Favorites" /T REG_EXPAND_SZ /D %folder%\Favorites /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Cookies" /T REG_EXPAND_SZ /D %folder%\Cookies /f >nul

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My pictures" /T REG_EXPAND_SZ /D %folder%\My pictures  /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My music" /T REG_EXPAND_SZ /D %folder%\My music  /f >nul


现在的问题是:如果选择的文件夹中没有空格,5个都能成功;一旦选择的文件夹中有空格,前3项能成功,后2项不能成功,显示“命令行参数太多”。

如何解决?

附件是批处理中要用到的Wfolder2

[ Last edited by chujiafu on 2010-7-19 at 10:43 ]

附件 1: Wfolder2.rar (2010-7-18 11:06, 4.2 K, 下载附件所需积分 1 点 ,下载次数: 2)
2010-7-18 11:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

echo %folder%
完整么?
如果完整就加引号就好了。



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-7-19 09:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 3 楼』:  

完整,加引号也不行,后2项仍不能成功,显示“命令行参数太多”。

[ Last edited by chujiafu on 2010-7-19 at 10:49 ]

2010-7-19 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

"%folder%\My pictures"
不是
"%folder%"\My pictures



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-7-20 09:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lovelymorning
初级用户





积分 131
发帖 72
注册 2008-2-24
状态 离线
『第 5 楼』:  


@echo off
for /f "delims=" %%a in ('Wfolder2') do (for %%b in (Personal,Favorites,Cookies,"My pictures","My music") do (if not "%%b"=="Personal" (reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v %%b /T REG_EXPAND_SZ /D "%%~a\%%~b" /f) else (reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v %%b /T REG_EXPAND_SZ /D "%%~a" /f)))
pause
[ Last edited by lovelymorning on 2010-7-20 at 21:34 ]

2010-7-20 21:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 6 楼』:  

Re 4楼slore兄:"%folder%\My pictures"也不行,错误提示为“命令行参数太多”;

Re 5楼 lovelymorning兄:方法可行,但Wfolder2初始选择文件夹时不是D:盘,而是批处理文件所在的文件夹。请问lovelymorning兄,如何在你的批处理里让Wfolder2初始选择的文件夹是D:盘呀?

2010-7-21 17:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovelymorning
初级用户





积分 131
发帖 72
注册 2008-2-24
状态 离线
『第 7 楼』:  


>temp.bat Wfolder2 "SET Folder=" "D:" "选择文件夹"
for /f "delims=" %%a in ('call temp.bat') do (
del temp.bat
for %%b in (Personal,Favorites,Cookies,"My pictures","My music") do (
if not "%%b"=="Personal" (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v %%b /T REG_EXPAND_SZ /D "%%~a\%%~b" /f
) else (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v %%b /T REG_EXPAND_SZ /D "%%~a" /f
)
)
)
Win7 系统,这个 wf……  没法搞成初始选择D盘的。。。。。

2010-7-21 21:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 8 楼』:  

Re 7楼lovelymorning兄:不行,提示“命令行参数太多"。

2010-7-21 21:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovelymorning
初级用户





积分 131
发帖 72
注册 2008-2-24
状态 离线
『第 9 楼』:  


Wfolder2 "SET Folder=" "D:" "选择文件夹" > temp.bat
call temp.bat
del temp.bat
for /f "delims=" %%a in ('echo %Folder%') do (set Folder=%%~a)
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Personal" /t REG_EXPAND_SZ /D "%folder%" /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Favorites" /T REG_EXPAND_SZ /D "%folder%\Favorites" /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Cookies" /T REG_EXPAND_SZ /D "%folder%\Cookies" /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My pictures" /T REG_EXPAND_SZ /D "%folder%\My pictures"  /f >nul
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My music" /T REG_EXPAND_SZ /D "%folder%\My music"  /f >nul
Win7系统。没测试。。。不保能用。。。。

2010-7-21 22:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 10 楼』:  

在XP下终于成功了,感谢lovelymorning兄。lovelymoning兄真乃批处理高手呀。

lovelymorning兄能不能解释一下9楼批处理中的第4行呀?

2010-7-22 09:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lovelymorning
初级用户





积分 131
发帖 72
注册 2008-2-24
状态 离线
『第 11 楼』:  

for /f "delims=" %%a in ('echo %Folder%') do (set Folder=%%~a)

只是将  folder 这个变量给去掉  引号 而已。。。

2010-7-22 14:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chujiafu
银牌会员





积分 1329
发帖 591
注册 2004-5-26
来自 安徽 宿州
状态 离线
『第 12 楼』:  

谢谢lovelymorning兄。

2010-7-22 15:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: