windows - 通过链接文件运行可执行文件时保留cmd工作目录

标签 windows cmd windows-10

采用以下目录结构:

C:
└─Test
  ├─a
  │ ├─a.bat
  ├─b
  │ └─b.lnk
  └─c

a.bat 是一个批处理文件,仅包含 echo %cd%,它打印当前工作目录。
b.lnk是指向a.bat的链接文件。它是通过按住 Alt 键将 a.bat 拖动到 b 目录并相应地重命名来创建的。

请按照以下步骤操作:

  1. 打开cmd
  2. 执行cd C:\Test\c
  3. 执行C:\Test\a\a.bat
    • 这将打印 C:\Test\c 因为这是运行批处理文件的 cmd 实例的工作目录。当前工作目录将保留。这也适用于任何可执行文件,例如包含 Console.WriteLine(Environment.WorkingDirectory); 的 C# 程序。
  4. 执行C:\Test\b\b.lnk
    • 这将打印批处理文件指向的目录C:\Test\a,而不是像上面那样的C:\Test\c

如何才能将 cmd 实例的工作目录转移到运行批处理文件(和其他程序)?

最佳答案

一种解决方案是打开链接文件的属性对话框并删除“执行于”文本框中的任何路径: Properties dialog of the link file

该值不仅在双击链接文件时适用,而且在从已有工作目录的现有进程运行时也适用。如果已设置,则优先。

此外,双击链接文件不会生成链接文件所在的目录C:\Test\b

我在写问题时发现了它,但由于我在谷歌上没有找到任何关于这个主题的内容,所以我还是提交了这个,希望其他人(以及我自己,当我最终忘记如何做时)可以找到它。

关于windows - 通过链接文件运行可执行文件时保留cmd工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910764/

相关文章:

java,将windows路径转换为dos 8.3格式

batch-file - 从批处理脚本中的字符串中提取前导数字

c# - Windows 10 上的 ContextMenu 和 Popup WPF 控件对齐错误

c++ - 使用 "expected a string literal, but found a user-defined string literal instead"C"'时是什么导致错误 'extern "?

windows - 批处理文件: List Directory & File names to individual variables and display as selection menu

windows - 如何在 Windows 上的 Cygwin 中运行 crontab?

Windows 和 Linux 上的 C 文件锁定行为

javascript - 从浏览器运行 cmd - 通过 JS

windows - 如何使用批处理文件检查驱动器格式类型

c# - 为 Release 编译的 UWP 中的 MissingTemplateException