2017-10-17 112 views
0

我試圖自動化我們在本地爲每個用戶執行的用戶配置,這就是爲什麼我通過批處理文件進行配置的原因。作爲其中的一部分,我需要將他們的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

回答

1

不要分配引號你的變量(見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

相關問題