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

时间:2018-10-20 22:57:08

标签: windows cmd windows-10

采用以下目录结构:

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

a.bat是一个批处理文件,仅包含echo %cd%,它打印当前的工作目录。
b.lnk是指向a.bat的链接文件。它是通过将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实例的工作目录转移到运行批处理文件(和其他程序)中?

1 个答案:

答案 0 :(得分:1)

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

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

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

我在写问题时发现了它,但是由于我在Google上没有找到关于此主题的任何内容,因此无论如何都要提交它,希望其他人(和我自己,当我最终忘记了如何做)可以找到它。 / p>

相关问题