我正在尝试搜索Windows路径变量,以查看其中是否存在目录。如果没有,则添加它。
我的代码如下:
@echo off
SET VAR1=%path%
echo %VAR1% > text.txt
FOR /f "tokens=* delims=;" %%a IN (text.txt) DO (
echo.%%a|findstr /C:"app0" >nul 2>&1
if not errorlevel 1 (
echo Directory was Found
) else (
SET PATH=%PATH%;%cd%\app0
)
)
我遇到的问题必须出现在else语句中。当我用echo NOT FOUND
替换SET PATH时,一切工作正常。但是,当我使用该行来设置path变量时,它返回“ \ Common这一次是意外的”。而%cd%不应包含“ common”,因为我是从台式机运行的
我以前运行过一次,它运行完美,一切正常,我重新启动,现在相同的代码无法达到相同的结果。
经过调试后,我发现问题实际上出在echo %VAR1% > text.txt
打开回显将显示以下内容:
echo C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\Intel(R)
> Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R)
> Management Engine
> Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program
> Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program
> Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
> (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program
> Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program
> Files\Intel\WiFi\bin\;C:\Program Files\Common
> Files\Intel\WirelessCommon\;C:\Program Files (x86)\Common
> Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\Intel(R)
> Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R)
> Management Engine
> Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program
> Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program
> Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
> (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program
> Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program
> Files\Intel\WiFi\bin\;C:\Program Files\Common
> Files\Intel\WirelessCommon\;C:\Users\Bryan
> Douglas\AppData\Local\Microsoft\WindowsApps;C:\Program
> Files\Intel\WiFi\bin\;C:\Program Files\Common
> Files\Intel\WirelessCommon\; 1>text.txt
> \Common was unexpected at this time.
我做错什么了吗?
答案 0 :(得分:0)
仅解决您的实际问题:
您的PATH包含右括号,例如:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
^ here
此括号会在set
命令处关闭命令块:
SET PATH=%PATH%;%cd%\app0
^ inside here
)
之后的下一个是\Common Files\Oracle\Java\javapath
,它被解释为带有参数\Common
的命令Files\Oracle\Java\javapath
。因此,您得到:
\ Common在此时是意外的。
使用首选语法set "var=value"
(注意引号的位置)。引号可以保护)&|
...
因此,您的代码仅使用首选的set
语法即可工作:
SET "PATH=%PATH%;%cd%\app0"