我正在编写一个Windows批处理文件,并希望将某些内容复制到桌面。我想我可以使用这个:
%USERPROFILE%\Desktop\
不过,我想,这可能只适用于英文操作系统。有没有一种方法可以在批处理文件中执行此操作,该文件可用于任何国际化版本?
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%
并得到这个输出:
S:\> REG QUERY“HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders”/ v桌面
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders
桌面REG_EXPAND_SZ%USERPROFILE%\桌面
S:\> FOR / F“usebackq tokens = 3 skip = 4”%i in(`REG QUERY“HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folder
s“/ v桌面”)设置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开启。
发布于 2018-04-09 13:02:48
我发现最好的解决方案是将VBScript与批处理文件一起使用。
以下是批处理文件:
@ECHO OFF
FOR /F "usebackq delims=" %%i in (`cscript findDesktop.vbs`) DO SET DESKTOPDIR=%%i
ECHO %DESKTOPDIR%
下面是findDesktop.vbs文件:
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
wscript.echo(strDesktop)
发布于 2018-04-09 14:15:14
为了安全起见,你应该在Powershell(或VBScript)中 使用适当的API 使用PowerShell:
[Environment]::GetFolderPath("Desktop")
使用Powershell复制内容:
Copy-Item $home\*.txt ([Environment]::GetFolderPath("Desktop"))
这是一个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
https://stackoverflow.com/questions/-100008015
复制相似问题