如果我的路径设置如下:
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变量中剪切输出字符串的方法。
答案 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。