Board logo

标题: 批处理变量中的空格问题 [打印本页]

作者: chujiafu     时间: 2010-7-18 11:06    标题: 批处理变量中的空格问题

想用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)

作者: slore     时间: 2010-7-19 09:23
echo %folder% 完整么? 如果完整就加引号就好了。

作者: chujiafu     时间: 2010-7-19 10:44
完整,加引号也不行,后2项仍不能成功,显示“命令行参数太多”。 [ Last edited by chujiafu on 2010-7-19 at 10:49 ]

作者: slore     时间: 2010-7-20 09:24
"%folder%\My pictures" 不是 "%folder%"\My pictures

作者: lovelymorning     时间: 2010-7-20 21:32
@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 ]

作者: chujiafu     时间: 2010-7-21 17:54
Re 4楼slore兄:"%folder%\My pictures"也不行,错误提示为“命令行参数太多”; Re 5楼 lovelymorning兄:方法可行,但Wfolder2初始选择文件夹时不是D:盘,而是批处理文件所在的文件夹。请问lovelymorning兄,如何在你的批处理里让Wfolder2初始选择的文件夹是D:盘呀?

作者: lovelymorning     时间: 2010-7-21 21:12
>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盘的。。。。。

作者: chujiafu     时间: 2010-7-21 21:57
Re 7楼lovelymorning兄:不行,提示“命令行参数太多"。

作者: lovelymorning     时间: 2010-7-21 22:28
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系统。没测试。。。不保能用。。。。

作者: chujiafu     时间: 2010-7-22 09:19
在XP下终于成功了,感谢lovelymorning兄。lovelymoning兄真乃批处理高手呀。 lovelymorning兄能不能解释一下9楼批处理中的第4行呀?

作者: lovelymorning     时间: 2010-7-22 14:09
for /f "delims=" %%a in ('echo %Folder%') do (set Folder=%%~a) 只是将 folder 这个变量给去掉 引号 而已。。。

作者: chujiafu     时间: 2010-7-22 15:44
谢谢lovelymorning兄。