通过批处理文件从PATH字符串中剪切第一个参数

时间:2018-02-08 04:55:53

标签: windows batch-file path

如果我的路径设置如下:

C:\ Program Files(x86)\ NVIDIA Corporation \ PhysX \ Common; C:\ Windows \ system32; C:\ Windows; C:\ Windows \ System32 \ Wbem; C:\ Windows \ System32 \ WindowsPowerShell \ v1 0.0 \

我需要将其设置如下:

C:\ Windows \ System32下; C:\视窗; C:\ Windows \ System32下\ WBEM; C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \

我使用以下代码来获取第一个参数:

@echo off
setlocal EnableDelayedExpansion
set c=1
for %%A in ("%path:;=";"%") do ( 
set b[!c!]=%%~A
set /a c=c+1
)

echo !%b[1]%!
pause

但我似乎找不到从PATH变量中剪切输出字符串的方法。

2 个答案:

答案 0 :(得分:1)

请告诉我这是否具有足够的指导意义:

@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@set prompt=$G

@set "_literal=test (blah);"
@set "_tmpPath=%_literal%%path%"
@set _tmpPath
set "_tmpPath=!_tmpPath:%_literal%=!"
set _

结果:

> test
_tmpPath=test (blah);C:\Program Files...SNIPPED...

>set "_tmpPath=!_tmpPath:test (blah);=!"

>set _
_literal=test (blah);
_tmpPath=C:\Program Files...SNIPPED...

很酷的是,如果有多个“测试(等等);”在路径中,它将被删除,除非它当然是最后一个条目,并且路径没有终端分号。在这种情况下,您首先剥离较长的版本,然后剥离较短的版本,以确保。

够好吗?

答案 1 :(得分:1)

FOR /F命令是你的朋友。 tokens选项可让您获取字符串的某个部分,也可以选择字符串的其余,这就是您想要的:

for /F "tokens=1* delims=;" %%a in ("%path%") do echo %%b

任何for /f说明网站的详细信息,例如this one