如何将字符串解析为特定字符,并且在该字符之后没有任何内容

时间:2017-12-12 16:35:10

标签: batch-file

所以当我在家庭服务器上完成某些操作时,我正在使用批处理脚本向我发送通知。问题是一组动作具有我无法修改的名称格式,但我希望名称通过干净而没有其他内容。

例如,我想看到的是:此文件已完成处理

我所看到的是:此文件正在处理[其他文件信息]

我用来提取文件名的批处理变量是:SET PName =%*

所以我的问题是可以有一种方法来修改该变量以进行解析以排除第一个[在字符串中以及之后的所有内容吗?

2 个答案:

答案 0 :(得分:2)

试试这个

set "var=This File Is Done Processing [additional file info]"
set "var=%var:[=&rem %"
set var=%var%

它将[之后的内容替换为&rem,稍后将其作为命令处理

for /f

set "var=This File Is Done Processing [additional file info]"
for /f "tokens=1* delims=[" %%# in ("%var%") do (
   set "var=%%#"
)
echo %var%

答案 1 :(得分:2)

使用SET命令构建@ npocmaka& REM技巧的另一个选项。

set "pname=This File Is Done Processing [additional] [file]"
(set "pname=%pname:[=" & set /p "=%" )<nul >nul

也可以通过这种方式完成,但会创建一个名为句点的额外变量。

set "pname=This File Is Done Processing [additional] [file]"
set "pname=%pname:[=" & set ".=%"

这两个背后的想法是只需少一行代码。