相关疑难解决方法(0)

javac不被识别为内部或外部命令,可操作程序或批处理文件

我在尝试编译Java程序时遇到错误.

我在Windows上(这是一个特定于Windows的问题),我安装了最新的JDK.

我尝试过涉及PATH变量的解决方案,但错误仍然存​​在.

控制台输出:

C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

java path javac environment-variables command-prompt

248
推荐指数
5
解决办法
106万
查看次数

Windows命令解释器(CMD.EXE)如何解析脚本?

我遇到了ss64.com,它为如何编写Windows命令解释器将运行的批处理脚本提供了很好的帮助.

但是,我一直无法找到批处理脚本的语法,扩展或不扩展的方法,以及如何逃避事情的良好解释.

以下是我无法解决的示例问题:

  • 如何管理报价系统?我制作了一个TinyPerl脚本
    (foreach $i (@ARGV) { print '*' . $i ; }),编译它并以这种方式调用它:
    • my_script.exe "a ""b"" c"?输出是 *a "b*c
    • my_script.exe """a b c"""?输出它*"a*b*c"
  • 内部echo命令如何工作?在那个命令中扩展了什么?
  • 为什么我必须for [...] %%I在文件脚本中使用,但for [...] %I在交互式会话中?
  • 什么是转义字符,以及在什么情况下?如何逃脱百分号?例如,我怎么能%PROCESSOR_ARCHITECTURE%字面回声?我发现echo.exe %""PROCESSOR_ARCHITECTURE%有效,有没有更好的解决方案?
  • 如何%配对?例:
    • set b=a,echo %a %b% c%%a a c%
    • set a =b,echo %a %b% c%bb c%
  • 如果此变量包含双引号,如何确保变量作为单个参数传递给命令?
  • 使用 …

windows parsing cmd batch-file variable-expansion

132
推荐指数
5
解决办法
6万
查看次数

app.config/web.config中的变量

是否可以在app.configweb.config文件中执行以下操作?

<appSettings>
 <add key="MyBaseDir" value="C:\MyBase" />
 <add key="Dir1" value="[MyBaseDir]\Dir1"/>
 <add key="Dir2" value="[MyBaseDir]\Dir2"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

然后我想在我的代码中访问Dir2,只需说:

 ConfigurationManager.AppSettings["Dir2"]
Run Code Online (Sandbox Code Playgroud)

当我在不同的服务器和位置安装我的应用程序时,这将帮助我,我将只需要更改我的整个条目app.config.(我知道我可以管理代码中的所有连接,但我更喜欢这种方式).

c# variables app-config web-config

86
推荐指数
4
解决办法
13万
查看次数

是否可以在批处理文件中嵌入和执行VBScript而不使用临时文件?

人们已经在批处理文件中嵌入和执行VBScript很长一段时间了.但是我所看到的所有已发布的解决方案(在此问题最初提出时)都涉及编写临时VBS文件.例如:在Windows批处理文件中嵌入VBScript.

是否可以在批处理中执行嵌入式VBScript而无需编写临时文件?

vbscript batch-file

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

conemu和console2模拟器没有获得新的路径变量

我想也许这是一个系统问题,但最近做了一个全新的安装(win7 64位)和一个干净的安装conemu(旧的win32系统上的conemu和console2都有同样的问题).我发现研究的所有内容都与通过命令行添加变量有关.我这样做是通过开始 - >控制面板 - >系统 - >高级系统设置,然后重新启动控制台.cmd正确地拾取路径.

当我手动向系统或用户PATH变量添加新路径然后重新启动控制台并回显%path%时,它没有重新加载新的PATH变量.

CMD.EXE:

C:\Users\lotus>echo %path%
C:\Python33\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\
System32\WindowsPowerShell\v1.0\;C:\Program Files\nodejs\;C:\PHP;C:\ProgramData\
Composer\bin;C:\PHP;C:\PHP\ext;C:\Ruby200-x64\bin;C:\Users\lotus\AppData\Roaming
\npm
Run Code Online (Sandbox Code Playgroud)

conemu:

C:\Program Files\ConEmu>echo %path%
C:\Program Files\ConEmu\ConEmu;C:\Program Files\ConEmu;C:\Python33\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Ruby200-x64\bin
Run Code Online (Sandbox Code Playgroud)

我知道有一个额外的C:\ PHP但这是另一个问题.如果我删除它,我仍然有同样的问题.

谢谢

environment-variables console2 conemu

21
推荐指数
1
解决办法
7742
查看次数

尽管已成功安装,但节点无法识

我尝试在全新的Windows 7安装上运行nodejs.这就是我所做的:

  1. 使用Windows安装程序安装节点

  2. 确保将文件解压缩到 C:\Program Files (x86)\nodejs\

  3. 确保我的Path环境变量包含 C:\Program Files (x86)\nodejs\

  4. 打开命令提示符并运行 node -v

这给了我'node is not a recognized ...'- 消息.

我在这里错过了什么?


更新 运行echo %path%为我提供了一个不包含的目录列表C:\Program Files (x86)\nodejs\,即使查看系统属性中的"环境变量"选项卡也会在路径下显示它.多数民众赞成.

windows path node.js

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

在Windows中切换不同的JDK版本

我正在开展几个项目,其中一些正在使用不同的JDK.在JDK版本之间切换并不舒服.所以我想知道是否有任何简单的方法来改变它?

我找到了2种方法,它们应该可以解决这个问题,但它不起作用.

第一个解决方案是创建这样的bat文件:

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_72
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.7.0_72\bin;%PATH%
echo Display java version
java -version
pause
Run Code Online (Sandbox Code Playgroud)

在运行这个蝙蝠之后,我看到了正确的Java版本.但当我关闭这个CMD并打开一个新的并输入"java -version"时,它说我仍然有1.8.0_25.所以它不起作用.

我找到的第二个解决方案是来自站点的应用程序.它也不起作用.与第一种解决方案相同的效果.

有任何想法吗?因为通过以下方式更改JAVA_HOME和PAHT:Win + Pause - >高级系统设置 - >环境变量 - >并编辑这些变量,这是很糟糕的方式......

java windows environment-variables

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

如何在vbs中设置可在调用批处理脚本中读取的环境变量

我有一个调用vbscript文件的批处理文件.我试图让vbscript文件更改一个环境变量,该变量稍后在调用vbscript文件的批处理文件中使用.

这是文件中的片段.

Parent.bat

Set Value="Initial Value"
cscript Child.vbs
ECHO Value = %VALUE%
Run Code Online (Sandbox Code Playgroud)

Child.vbs

Set wshShell = CreateObject( "WScript.Shell" )
Set wshSystemEnv = wshShell.Environment( "Process" )
wshSystemEnv("VALUE") = "New Value"
Run Code Online (Sandbox Code Playgroud)

vbscript

11
推荐指数
1
解决办法
4万
查看次数

将System Env变量传递给Jenkins Slave

这开始让我发疯了......但似乎我不幸自己想出来:/

我需要设置一个机构共享两个从机之间的字符串值,例如,名为从属和从.

目前我发现的最接近的是这个问题: Jenkins Slave Environment Variable Refresh

但它仍然旨在启用buildcripts中的访问,而不是Slaves环境变量本身.(相关SO问题:如何在Jenkins中使用Windows批处理命令使用环境变量?)

目前我有这个设置:

1)在A上工作A被触发.

它执行这个Windows批处理代码(显然,实际路径被替换为'<>'):

cmd /c start java -jar <path_of_slave>\slave.jar -jnlpUrl  <url_of_slave>/slave-agent.jnlp

setenv.exe /m HOR_BUILD_ID -delete
setenv.exe /m HOR_BUILD_ID %BUILD_NUMBER%
setenv.exe /m HOR_UPSTREAM_ID -delete
setenv.exe /m HOR_UPSTREAM_ID %JOB_NAME%
Run Code Online (Sandbox Code Playgroud)

相当不言自明和直截了当的imho.

2)A上的作业具有上游作业B,即成功构建时触发.因此,在从属B中,B构建执行此批处理代码(显然,实际路径被替换为'<>'):

SetLocal EnableDelayedExpansion

@echo off
@echo --- Refreshing Environemnt variables... 
@echo on
set prgfil=%ProgramFiles(x86)%
call "%WORKSPACE%\..\..\..\tools\misc\resetvars.bat"
@echo --- Reading environment variables... 
copy /y "<path_containing_%HOR_UPSTREAM_ID%_variable" "<path_containing_%HOR_BUILD_ID%_variable" …
Run Code Online (Sandbox Code Playgroud)

continuous-integration environment-variables slave jenkins

7
推荐指数
1
解决办法
8709
查看次数

TFS Build无法找到Grunt

我在我们的TFS构建服务器上安装了npm和grunt.我使用npm install -g grunt-cli安装了grunt-cli,然后在以我自己的身份登录时能够从命令行运行grunt deploy.

Out TFS版本作为tfsservice用户运行,当它尝试执行grunt部署时,它会收到一条错误消息:

'grunt' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

所以,当我在构建服务器上以我自己的身份登录时,如果我将命令提示符作为tfsservice运行,我会得到相同的错误.所以我尝试从命令提示符下执行npm install -g grunt-cli,它看起来已经正确安装并在C:\ Users\tfsservice\AppData\Roaming \npm中创建了grunt文件,但是后来我仍然得到了同样的错误当运行grunt部署时.

所以看起来grunt-cli没有为tfsservice安装?当我得到tfsservice%homepath%时,我看到它被设置为\ Windows\system32,而不是预期的\ Users\tfsservice ; 也许这是一个服务帐户与它有关?

我看到类似的问题已被要求在团队城市中使用grunt-cli,但它建议使用Team City特定的插件.

还有这篇帖子说他们改变了Team City作为一个不同的用户运行,然后一切都开始正常工作.尽管如此,将我们的构建更改为以不同于tfsservice的用户身份运行并不是一个真正的选择.

任何建议表示赞赏.谢谢.

tfs node.js npm grunt-cli

6
推荐指数
1
解决办法
3466
查看次数

如何在批处理脚本中刷新 PATH 环境变量

我有一个批处理文件“file.bat”,它将使用以下命令调用安装程序:

msiexec.exe /i "%~dp0\installer.msi"
Run Code Online (Sandbox Code Playgroud)

安装程序将安装程序并更新 Path 变量。虽然这工作正常,但问题是当我尝试启动程序时找不到它,因为显然 PATH 变量没有更新。我尝试从内部重新启动批处理文件:

start cmd /c file.bat 
Run Code Online (Sandbox Code Playgroud)

但它没有用。有没有办法刷新 PATH 变量或在新进程中重新启动批处理文件,以便检测新环境?

PS:手动重新启动批处理文件当然有效,但这不是我想要的。

谢谢。

windows path batch-file environment-variables windows-server-2012

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

如何在 Python 中读出*新*操作系统环境变量?

在 Python 中读取操作系统环境变量是小菜一碟。尝试使用以下三行代码'PATH'在 Windows 中读出变量:

    #################
    #   PYTHON 3.5  #
    #################
    >> import os
    >> pathVar = os.getenv('Path')
    >> print(pathVar)

        C:\Anaconda3\Library\bin;C:\Anaconda3\Library\bin;
        C:\WINDOWS\system32;C:\Anaconda3\Scripts;C:\Apps\SysGCC\arm-eabi\bin;
        ...
Run Code Online (Sandbox Code Playgroud)

现在对'PATH'变量做一个小的改变。你可以在...里找到它们:

控制面板>>系统和安全>>系统>>高级系统设置>>环境变量

如果您在 Python 中运行相同的代码,则更改不可见!您必须关闭启动 Python 会话的终端。当您重新启动它并再次运行代码时,更改将可见。

有没有办法立即看到变化——而无需关闭python?这对于我正在构建的应用程序很重要。

非常感谢 :-)


编辑 :

Martijn Pieters 向我展示了以下链接: Windows 中是否有从命令提示符刷新环境变量的命令?

该链接中提到了许多选项。我选择了以下一个(因为它只是一个批处理文件,没有额外的依赖项):

            REM   --------------------------------------------
            REM   |            refreshEnv.bat                |
            REM   --------------------------------------------
    @ECHO OFF
    REM Source found on https://github.com/DieterDePaepe/windows-scripts
    REM Please share any improvements made!

    REM Code inspired by /sf/ask/12011191/

    IF [%1]==[/?] GOTO :help
    IF [%1]==[/help] GOTO :help
    IF …
Run Code Online (Sandbox Code Playgroud)

python environment-variables python-3.x

4
推荐指数
1
解决办法
6588
查看次数