Jer*_*xon 2 batch-file windows-10
我希望编写一个批处理文件,将文件复制到用户的Documents文件夹,但是找不到指示它的环境变量。我可以从用户配置文件路径派生Documents文件夹,但这是不可靠的,因为Windows可以通过选择“位置”选项卡+“移动”文件夹属性将“ Documents”文件夹移动到任何位置。
有人知道如何找到该文件夹吗?
没有为此的环境变量。相反,您可以在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%
Run Code Online (Sandbox Code Playgroud)
好吧,你问的不是傻瓜证明。你指的是图书馆。库的问题在于库中可以包含多个文件夹。
但是,有一种合理的方法可以获得您想要的东西。Windows 提供了ShellSpecialFolder可以使用Shell.ApplicationCOM 对象枚举的常量。Documents库的常数是0x05。这是一个 PowerShell 命令示例:
powershell "(new-object -COM Shell.Application).Namespace(0x05).Self.Path"
Run Code Online (Sandbox Code Playgroud)
我的家用电脑有一个 120GB 的 SSD 启动驱动器和一个 2TB D: 驱动器。所以我的文档库指向D:\Documents. 上面的命令D:\Documents按照您希望的方式打印。
如果您更喜欢 Windows Script Host 而不是 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);
Run Code Online (Sandbox Code Playgroud)
您还可以考虑让用户浏览到他想要的保存位置,默认0x05为文档。
| 归档时间: |
|
| 查看次数: |
2258 次 |
| 最近记录: |