相关疑难解决方法(0)

如何在环境变量PATH中搜索和替换字符串?

是否有批处理命令来搜索和替换环境变量PATH中的字符串?

例如,环境变量PATH的内容是:

C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\AccuRev\bin;C:\Python24
Run Code Online (Sandbox Code Playgroud)

我必须C:\Python24在这个变量中搜索并需要替换它C:\Python27.

search command replace batch-file

3
推荐指数
1
解决办法
5166
查看次数

"X未被识别为内部或外部命令,可操作程序或批处理文件"的原因是什么?

我有一个在命令行中完美运行的单行代码段,但在我作为批处理脚本的一部分运行时失败并引发错误.

以下命令按预期运行,删除文件夹中的所有空子文件夹.

for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do rd "%d"
Run Code Online (Sandbox Code Playgroud)

但是,当放入批处理文件时...

FOR /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do rd "%%d"
Run Code Online (Sandbox Code Playgroud)

...它抛出了标准错误:

排序不被识别为内部或外部命令

我一直在尝试了一个小时左右,有和没有逃脱管,改变的选项的顺序,查找两者的文件dirsort等等,但我还是没能弄清楚这是怎么回事这里.批处理文件的其余部分(只有几行)工作正常,这是其中唯一失败的行.

有人可以帮忙吗?

windows cmd batch-file

3
推荐指数
2
解决办法
4万
查看次数

将当前目录永久添加到 Windows 路径

我正在尝试将当前目录(从命令行)永久添加到 Windows 路径,但是我在实现这个时遇到了严重的问题。

我最初的尝试是:

set PATH=%PATH%;%cd%
Run Code Online (Sandbox Code Playgroud)

但是,这只适用于当前会话;只要我关闭命令行窗口,PATH环境变量就会保留其先前的值。

接下来,我尝试:

setx PATH=%PATH%;%cd%
Run Code Online (Sandbox Code Playgroud)

根据我在此处找到的一些答案,这可能适用于 Windows 7 和 8,但在 Windows 10 中,该setx命令具有三种工作方式:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
Run Code Online (Sandbox Code Playgroud)

长话短说,我无法让它工作:

ERROR: Invalid syntax. Default option is not allowed more than …
Run Code Online (Sandbox Code Playgroud)

command-line path batch-file environment-variables

3
推荐指数
1
解决办法
5047
查看次数

为什么其他文件夹路径也使用 SetX 添加到系统 PATH 而不仅仅是指定的文件夹路径?

我有一个批处理文件,我使用system("name.bat"). 在该批处理文件中,我试图读取注册表项的值。从 C++ 调用批处理文件会导致set KEY_NAME=HKEY_LOCAL_MACHINE\stuff失败。

但是,当我直接运行批处理文件(双击它)时,它运行良好。不知道我做错了什么。

批处理文件:

set KEY_NAME=HKEY_LOCAL_MACHINE\SOFTWARE\Ansoft\Designer\2014.0\Desktop
set VALUE_NAME=InstallationDirectory
REG QUERY %KEY_NAME% /v %VALUE_NAME%
Run Code Online (Sandbox Code Playgroud)

C++文件:

int main(void)
{
    system("CALL C:\\HFSS\\setup_vars.bat");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

更新1:

我发现密钥实际上在 64 位注册表中,并且我正在将 C++ 解决方案构建为 32 位。一旦我解决了这个问题,它就会发现注册表项很好。

现在我在将该路径添加到我的PATH变量时遇到了问题。它不是创建系统变量,而是创建用户变量PATH并将其添加到那里。

从命令行运行有效。

代码:

set KEY_NAME=HKLM\SOFTWARE\Ansoft\Designer\2014.0\Desktop\
set VALUE_NAME=InstallationDirectory

FOR /F "usebackq skip=1 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME%`) DO (
   set ValueName=%%A
   set ValueType=%%B
   set ValueValue=%%C
)

if defined ValueName (
   @echo Value Value = %ValueValue%
) else …
Run Code Online (Sandbox Code Playgroud)

registry batch-file

2
推荐指数
1
解决办法
1519
查看次数

如何在Windows上只在批处理文件中设置一次PATH环境变量?

我有批处理文件,用于设置用户路径,并作为Visual Studio IDE构建步骤的一部分运行.

@ECHO OFF
@ECHO %PATH%
set COMSPEC = "%VCINSTALLDIR%\vcvarsall.bat" amd64
setx PATH "..\..\lib\libsndfile;..\..\lib\simulink" 
@ECHO %PATH%
Run Code Online (Sandbox Code Playgroud)

当我构建项目,关闭VS,并重新打开它,并重建时,我将附加路径视为PATH变量的一部分.但是,我看到在Windows环境中设置环境变量PATH变量是在用户环境变量下创建的

..\..\lib\libsndfile;..\..\lib\simulink
Run Code Online (Sandbox Code Playgroud)

问题1:

为什么此路径也作为附加路径显示为系统环境变量的一部分?

echo %PATH%通过Visual Studio控制台执行时(当我第二次运行项目时)打印系统变量路径和我创建的新路径附加到它.

问题2:

我想修改我的批处理文件,以便它只PATH在首次运行Visual Studio构建期间在用户设置中设置一次环境变量.如果用户变量PATH在后续运行中已存在,则不应再次执行set命令以避免在系统变量中反复添加新路径.

任何想法如何实现这一目标?

batch-file

2
推荐指数
1
解决办法
7026
查看次数