小编use*_*742的帖子

Powershell忽略了正则表达式后面的内容以返回整行

我希望这是一个简单的问题.

我有一个文本日志文件,其中包含以下行:

123,010502500114082000000009260000000122001T

我想搜索日志文件并返回上面文本的"00000000926"部分.所以我写了一个正则表达式:(?<= 123. {17}).{11}

因此,当文本后面的内容等于'123'时有17个字符,返回下一个11.这在在线正则表达式编辑器上测试时工作正常.但是在Powershell中,返回整行而不是我想要的11个字符,我无法理解为什么.

$InputFile = get-content logfile.log
$regex = '(?<=123.{17}).{11}'
$Inputfile | select-string $regex
Run Code Online (Sandbox Code Playgroud)

(返回整行).

为什么powershell会返回整条线路?

regex powershell

7
推荐指数
3
解决办法
420
查看次数

IF 语句导致 SET PATH 失败

我正在 Windows 7 上编写一个简单的批处理脚本来添加一些环境文件路径。问题是,由于现有路径中有空格,我的设置路径命令失败:

SET PATH=C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;%Path%
Run Code Online (Sandbox Code Playgroud)

这失败了 '\ Microsoft cannot be found' 这指的是我认为在现有的 %path% 变量中:-

c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\
Run Code Online (Sandbox Code Playgroud)

有没有简单的解决方案?

更新:原来问题在于周围的 IF 语句。这个脚本抛出了提到的错误消息:

IF "TEST" == "TEST" (
  ECHO Using TEST settings on %COMPUTERNAME%
  SET PATH="C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;%Path%"
  SET GDRIVE= (removed path)
) 
Run Code Online (Sandbox Code Playgroud)

但是如果我删除 IF 语句,它工作正常:

ECHO Using TEST settings on %COMPUTERNAME%
SET PATH="C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;%Path%"
SET GDRIVE= (removed path)
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么 IF 语句会导致 SET PATH 失败?

batch-file

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

标签 统计

batch-file ×1

powershell ×1

regex ×1