【问题标题】:Location of Desktop Shell Folder桌面外壳文件夹的位置
【发布时间】:2014-11-13 05:18:10
【问题描述】:

是否有任何代码或参数可以指定用户计算机上的桌面文件,但在批处理文件中也兼容其他用户?

或者这里是一个例子。这是代码

move -y temp.bat [The parameter I'm asking for]

我在问是否有一个参数可以用来指定两个A的电脑上的桌面:

C:\Users\A\Desktop

还有 B 的电脑:

C:\Users\B\Desktop

谢谢。

【问题讨论】:

  • %USERPROFILE%\Desktop 通常可以工作(可能存在一些文件夹重定向场景,但它不能 - 没有承诺)。

标签: batch-file


【解决方案1】:

Windows 可以访问 Shell 文件夹(通过 registry.NET),以便任何想要找到它的应用程序。

下面是使用PowerShell获取它的方法。

SETLOCAL

FOR /F "usebackq" %%f IN (`PowerShell -NoProfile -Command "Write-Host([Environment]::GetFolderPath('Desktop'))"`) DO ( SET "DESKTOP_FOLDER=%%f" )

@ECHO %DESKTOP_FOLDER%

【讨论】:

  • 那么,我是直接将此代码插入到我的批处理文件中,还是创建一个新文件?那我应该在哪里插入呢?
  • FOR /F 语句是您真正必须插入现有脚本的全部内容。它设置了环境变量DESKTOP_FOLDER,以便您可以在脚本的其他地方使用它。
  • 那么我应该在哪里插入呢? (对不起,这似乎很愚蠢,但我只是一个初学者)
  • 在您真正需要知道桌面文件夹在哪里之前的任何一点。在您提供的示例中,在 move 命令之前,应该如下所示:move -y temp.bat "%DESKTOP_FOLDER%"
  • 作为一般原则,添加tokens=* delims=,即FOR /F "usebackq tokens=* delims=" %f IN ... 用于what-if结果包含空格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
相关资源
最近更新 更多