我正在尋找寫一個批處理文件,將文件複製到用戶的文檔文件夾,但我找不到指示它的環境變量。我可以從用戶配置文件路徑派生Documents文件夾,但這是不可靠的,因爲Windows可以通過選擇位置選項卡+在文件夾屬性中移動將文檔文件夾移動到任何位置。Windows 10環境變量的文檔文件夾
任何人都知道如何找到該文件夾?
我正在尋找寫一個批處理文件,將文件複製到用戶的文檔文件夾,但我找不到指示它的環境變量。我可以從用戶配置文件路徑派生Documents文件夾,但這是不可靠的,因爲Windows可以通過選擇位置選項卡+在文件夾屬性中移動將文檔文件夾移動到任何位置。Windows 10環境變量的文檔文件夾
任何人都知道如何找到該文件夾?
這裏沒有環境變量。你可以,而是看在Windows註冊表中,它存儲的文檔文件夾的名稱的地方,但即使是棄用:
@echo off
for /f "tokens=3*" %%p in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal') do (
set DocumentsFolder=%%p
)
echo %DocumentsFolder%
嗯,你問是不是傻瓜證明什麼。你指的是圖書館。圖書館的問題是圖書館中可能包含多個文件夾。
但是,有一個合理的方法來得到你想要的。 Windows提供ShellSpecialFolder
常量,您可以使用Shell.Application
COM對象進行枚舉。 Documents
庫的常量是0x05
。這裏有一個PowerShell命令例如:
powershell "(new-object -COM Shell.Application).Namespace(0x05).Self.Path"
我家的電腦有一個120GB固態硬盤引導驅動器和一個2TB的d:驅動器。所以我有我的文檔庫指向D:\Documents
。上面的命令打印D:\Documents
正如你所希望的那樣。
如果您更喜歡Windows Script Host over PowerShell(因爲WSH速度更快),您可以編寫混合批處理+ JScript腳本來完成相同的任務。
@if (@CodeSection == @Batch) @then
@echo off & setlocal
rem // cscript re-evaluates this script with the JScript interpreter
cscript /nologo /e:JScript "%~f0"
goto :EOF
@end // end Batch/begin JScript hybrid chimera
WSH.Echo(WSH.CreateObject('Shell.Application').Namespace(0x05).Self.Path);
你也可以考慮letting the user browse他需要的保存位置,默認爲0x05
的文件。
我沒有看到完全可靠的方式來批量執行此操作。我知道這是超出請求,但我認爲這個VBScript將可靠地工作。
Option explicit
Dim objShell
Dim strPath
Set objShell = Wscript.CreateObject("Wscript.Shell")
strPath = objShell.SpecialFolders("MyDocuments")
msgbox strPath
偉大的思想家都認爲一樣。 :) +1也可以和我一樣使用ShellSpecialFolder常量。奇怪的是,你的方法'WSH.CreateObject('Wscript.Shell')。SpecialFolders('MyDocuments')'和我的WSH.CreateObject('Shell.Application')具有相同的輸出。命名空間(0x05).Self。路徑「,並且具有完全相同的字符數量。 – rojo
什麼讓你覺得會有一個環境變量呢?另外,你可以通過在命令行鍵入'set'來看到所有當前環境變量的列表。 – SomethingDark