中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 00:08
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理变量中的空格问题 查看 1,027 回复 11
楼 主 批处理变量中的空格问题 发表于 2010-07-18 11:06 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
想用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 ]
附件
Wfolder2.rar (4.2 KiB, 下载附件所需积分 1 点, 下载次数: 2)
2 发表于 2010-07-19 09:23 ·  中国 北京 263网络通信电信数据中心
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
echo %folder%
完整么?
如果完整就加引号就好了。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2010-07-19 10:44 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
完整,加引号也不行,后2项仍不能成功,显示“命令行参数太多”。

[ Last edited by chujiafu on 2010-7-19 at 10:49 ]
4 发表于 2010-07-20 09:24 ·  中国 北京 263网络通信电信数据中心
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
"%folder%\My pictures"
不是
"%folder%"\My pictures
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2010-07-20 21:32 ·  中国 广东 广州 移动
初级用户
★★
积分 131
发帖 72
注册 2008-02-24 14:31
18年会员
UID 111317
性别 男
状态 离线

@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 ]
6 发表于 2010-07-21 17:54 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
Re 4楼slore兄:"%folder%\My pictures"也不行,错误提示为“命令行参数太多”;

Re 5楼 lovelymorning兄:方法可行,但Wfolder2初始选择文件夹时不是D:盘,而是批处理文件所在的文件夹。请问lovelymorning兄,如何在你的批处理里让Wfolder2初始选择的文件夹是D:盘呀?
7 发表于 2010-07-21 21:12 ·  中国 广东 广州 移动
初级用户
★★
积分 131
发帖 72
注册 2008-02-24 14:31
18年会员
UID 111317
性别 男
状态 离线
>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盘的。。。。。
8 发表于 2010-07-21 21:57 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
Re 7楼lovelymorning兄:不行,提示“命令行参数太多"。
9 发表于 2010-07-21 22:28 ·  中国 广东 广州 移动
初级用户
★★
积分 131
发帖 72
注册 2008-02-24 14:31
18年会员
UID 111317
性别 男
状态 离线
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系统。没测试。。。不保能用。。。。
10 发表于 2010-07-22 09:19 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
在XP下终于成功了,感谢lovelymorning兄。lovelymoning兄真乃批处理高手呀。

lovelymorning兄能不能解释一下9楼批处理中的第4行呀?
11 发表于 2010-07-22 14:09 ·  中国 广东 广州 移动
初级用户
★★
积分 131
发帖 72
注册 2008-02-24 14:31
18年会员
UID 111317
性别 男
状态 离线
for /f "delims=" %%a in ('echo %Folder%') do (set Folder=%%~a)

只是将 folder 这个变量给去掉 引号 而已。。。
12 发表于 2010-07-22 15:44 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
谢谢lovelymorning兄。
论坛跳转: