本地文件夹重定向到映射网络驱动器批处理文件

问题描述:

我试图自动化我们在本地为每个用户执行的用户配置,这就是为什么我通过批处理文件进行配置的原因。作为其中的一部分,我需要将他们的Documents文件夹重定向到映射为他们U盘的内容。如果我的文档文件夹存在于他们的U盘中,我需要它到达那里,如果没有,我需要将它映射到他们U盘的根目录。本地文件夹重定向到映射网络驱动器批处理文件

下面的代码是我目前有的,但它总是默认为Else条件,即使我有我检查的文件夹。

如果有人可以帮忙,请做。

@echo off 
cd\ & cls 
set UDRIVE="u:\My Documents\" 
If exist %udrive% (set newDocuments=%udrive%) Else (set newDocuments=U:\) 

set registryPath1="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" 
set registryPath2="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" 

>null reg add %registryPath1% /v "Personal" /t REG_SZ /d %newDocuments% /f 
>null reg add %registryPath2% /v "Personal" /t REG_EXPAND_SZ /d %newDocuments% /f 
>null reg add %registryPath2% /v "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" /t REG_EXPAND_SZ /d %newDocuments% /f 
echo Redirection completed. 



%echo% 
Pause 
%echo% 
+0

使用'IF存在'%udrive%\“(GOTO:FolderRedirect)ELSE GOTO:FolderRedirect2'。阅读'if /?'获取基本解释。 – JosefZ

+0

它仍然违反其他条件。无论目标文件夹是否仍存在其默认条件。 – LaneDutch

+0

在':FolderRedirect2'标签之前插入'goto:somewhere'。 – JosefZ

不要分配引号你的变量(见this Squashman's comment):最佳做法是分配您的变量是这样的:set "varname=varvalue"。这有助于保留特殊字符和空格,但不会将引号分配给变量。然后,指他们使用双引号明确像"%varname%"

上述规则适用于您的代码段如下:

@echo off 
cd\ & cls 
set "UDRIVE=u:\My Documents\" 
If exist "%udrive%" (set "newDocuments=%udrive%") Else (set "newDocuments=U:\") 

set "registryPath1=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" 
set "registryPath2=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" 

>null reg add "%registryPath1%" /v "Personal" /t REG_SZ /d "%newDocuments%\" /f 
>null reg add "%registryPath2%" /v "Personal" /t REG_EXPAND_SZ /d "%newDocuments%\" /f 
>null reg add "%registryPath2%" /v "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" /t REG_EXPAND_SZ /d "%newDocuments%\" /f 
echo Redirection completed. 

请注意:反斜杠字符

REG命令将解释\作为 紧随其后的字符的转义。要在数据中包含引号("),请在 前加转义字符,例如:这是\"的报价。
这可能会导致引用的目录路径出现问题,因为\"在 行的末尾将被转义。
要保存带尾部反斜杠(\)的目录路径 ,需要向 “转义”转义,例如,而不是“C:\ My Docs \”使用“C:\ My Docs \”。

+0

好吧,我在那里与你,但它仍然挂,当它试图将其重定向到U:\我的文档\我想知道如果我需要删除之前添加密钥?说实话,我都是出于想法。 – LaneDutch

+0

如果我从UDRIVE路径中取出空间,它的工作原理与其他所有相同。我怎样才能使它与空间一起工作? – LaneDutch

+0

请参阅更新的答案(注意:反斜杠字符)。检查'reg query“HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders”(以及'User Shell Folders')。 – JosefZ