标题: 批处理变量中的空格问题
[打印本页]
作者: 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兄。