【发布时间】:2011-01-01 07:41:02
【问题描述】:
我正在编写一个 Windows 批处理文件并想将某些内容复制到桌面。我想我可以用这个:
%UserProfile%\桌面\
但是,我在想,这可能只适用于英文操作系统。有没有办法可以在适用于任何国际化版本的批处理文件中执行此操作?
更新
我尝试了以下批处理文件:
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
FOR /F "usebackq tokens=3 skip=4" %%i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET DESKTOPDIR=%%i
FOR /F "usebackq delims=" %%i in (`ECHO %DESKTOPDIR%`) DO SET DESKTOPDIR=%%i
ECHO %DESKTOPDIR%
得到了这个输出:
S:\>REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell 文件夹" /v 桌面 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell 文件夹 桌面 REG_EXPAND_SZ %USERPROFILE%\Desktop S:\>FOR /F "usebackq tokens=3 skip=4" %i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell 文件夹 s" /v 桌面`) DO SET DESKTOPDIR=%i S:\>FOR /F "usebackq delims=" %i in (`ECHO ECHO is on.`) DO SET DESKTOPDIR=%i S:\>SET DESKTOPDIR=ECHO 开启。 S:\>ECHO ECHO 开启。 ECHO 开启。【问题讨论】:
-
@Scott Langham:也许 Powershell(或 VB 脚本)会帮助你
-
问题在于
skip=4选项。这告诉FOR命令在处理数据之前要跳过多少标题行。在 XP 上有 4 行,但在我的 Windows 7 系统和您的系统上只有 1 行。所以将skip=4更改为skip=1应该可以。此外,您只需要脚本中的两个FOR命令。不需要第一次调用REG。 -
你测试了吗?据我所知,所有 Windows 7 及更高版本都使用相同的桌面文件夹路径。它只是直观地转换为系统的当前语言。我的系统不是 en-US 并且
%UserProfile%\Desktop\运行良好。
标签: windows powershell vbscript localization desktop