Sco*_*ham 61 windows vbscript powershell desktop localization
我正在编写Windows批处理文件,并希望将某些内容复制到桌面.我想我可以用这个:
%USERPROFILE%\桌面\
但是,我在想,这可能只适用于英语操作系统.有没有办法可以在批处理文件中执行此操作,该文件适用于任何国际化版本?
UPDATE
我尝试了以下批处理文件:
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%
Run Code Online (Sandbox Code Playgroud)
得到了这个输出:
S:\>REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Desktop 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 Folder
s" /v Desktop`) DO SET DESKTOPDIR=%i
S:\>FOR /F "usebackq delims=" %i in (`ECHO ECHO is on.`) DO SET DESKTOPDIR=%i
S:\>SET DESKTOPDIR=ECHO is on.
S:\>ECHO ECHO is on.
ECHO is on.
Kb.*_*Kb. 55
为安全起见,您应该在Powershell(或VBScript)中
使用适当的API 使用PowerShell:
[Environment]::GetFolderPath("Desktop")
Run Code Online (Sandbox Code Playgroud)
使用Powershell复制一些东西:
Copy-Item $home\*.txt ([Environment]::GetFolderPath("Desktop"))
Run Code Online (Sandbox Code Playgroud)
以下是获取桌面路径的VBScript示例:
dim WSHShell, desktop, pathstring, objFSO
set objFSO=CreateObject("Scripting.FileSystemObject")
Set WSHshell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")
pathstring = objFSO.GetAbsolutePathName(desktop)
WScript.Echo pathstring
Run Code Online (Sandbox Code Playgroud)
INS*_*INS 14
我发现最好的解决方案是将vbscript与批处理文件一起使用.
这是批处理文件:
@ECHO OFF
FOR /F "usebackq delims=" %%i in (`cscript findDesktop.vbs`) DO SET DESKTOPDIR=%%i
ECHO %DESKTOPDIR%
Run Code Online (Sandbox Code Playgroud)
这是findDesktop.vbs文件:
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
wscript.echo(strDesktop)
Run Code Online (Sandbox Code Playgroud)
可能还有其他解决方案,但我个人认为这个解决方案不那么苛刻.
我在英语PC和法国PC上进行了测试 - 它似乎有效(Windows XP).
HTH,
IulianŞerbănoiu
Saq*_*qib 14
KB的使用答案[Environment]::GetFolderPath("Desktop")显然是用于执行此操作的官方Windows API.
但是,如果您在提示符处以交互方式工作,或者只是想在您的计算机上运行某些东西,则tilda(〜)字符将引用当前用户的主文件夹.因此~/desktop是用户的桌面文件夹.
Vit*_*.us 14
至少在Windows XP,Vista和7上你可以"%UserProfile%\Desktop"安全使用.
Windows XP en-US它将扩展到"C:\Documents and Settings\YourName\Desktop"
Windows XP pt-BR它将扩展到"C:\Documents and Settings\YourName\Desktop"
Windows 7 en-US它将扩展到"C:\Users\YourName\Desktop"
Windows 7 pt-BR它将扩展到"C:\Usuarios\YourName\Desktop"
在XP中,你不能用这个文件夹,别人对exept桌面
My documents转向Meus Documentos和Local Settings对Configuracoes locais本人来说我认为,这突出的OS时是一件坏事.
这不仅不适用于国际版本的Windows,如果用户编辑了注册表以使其桌面文件夹位于其他位置,则会失败.您可以使用以下REG命令在Registry中查询文件位置:
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
Run Code Online (Sandbox Code Playgroud)
要将其变为变量,请使用以下内容:
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%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
196410 次 |
| 最近记录: |