0

在我的 Windows 笔记本电脑上,我的公司将环境变量 CD 设置为某个目录,我无法更改它。在批处理文件中,我必须使用当前的工作目录,例如

set current_dir=%cd%

现在环境覆盖了当前目录。如果我把线

set cd=

前面的原始变量将被删除。是否有一种安全的方法来获取当前目录,因为批处理文件也可能在其他环境中使用?

4

2 回答 2

0

根据我的评论,对于一般用途,我建议的第一件事是您使用%__CD__%, (或者如果您不想要尾部的反斜杠,%__CD__:~,-1%,而不是。

例子:

@Set "CWD=%__CD__:~,-1%"
@Set CWD 2>NUL
@Pause

以下替代方案也可能对您有所帮助,尽管没有在类似损坏的环境中进行测试:

@Set "CWD="
@For %%G In (.) Do @Set "CWD=%%~fG"
@Set CWD 2>NUL
@Pause
@Set "CWD="
@For /F "Delims=" %%G In ('CD') Do @Set "CWD=%%G"
@Set CWD 2>NUL
@Pause
@Set "CWD="
@For /F "EOL=? Delims=" %%G In ('Echo Prompt $P^|%SystemRoot%\System32\cmd.exe /D/E')Do @Set "CWD=%%G"
@Set CWD 2>NUL
@Pause
于 2021-10-13T16:32:09.107 回答
-1

将当前路径分配给变量的基本命令是:

命令行: FOR /f %p in ('CD') do SET myVar=%p
批处理脚本: FOR /f %%p in ('CD') do SET myVar=%%p

但是您可以
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]\autoron
通过在每次打开 MSDOS 实例时插入以下宏来进一步编辑 Windows 注册表:

DOSKEY CHDIR=(IF [$1] == [] ( CD ) ELSE ( PUSHD $* )) & FOR /f %p in ('CD') do @SET cd=%p

因此,覆盖CHDIR命令以将当前路径设置为%cd%变量或您想要的任何其他内容。还使用网络目录:D

于 2021-10-13T17:08:22.583 回答