如何获取环境变量中的第一个单词? - batch/cmd

如何获取环境变量中的第一个单词? - batch/cmd

我想将文件复制到某个位置,Jenkins 用户将被要求输入项目名称,批处理文件只需将项目名称的第一个单词输入到目录路径中。

C:\Testfolder\%Project_Name%\Sub\

现在项目名称如下所示:

Proj_1 Something Somethingelse

但是我只希望 Proj_1 成为访问的文件夹,如下所示:

C:\Testfolder\Proj_1\Sub
Not: C:\Testfolder\Proj_1 Something Somethingelse\Sub\

有没有什么办法可以批量完成?

答案1

如何获取环境变量中的第一个单词?

使用以下批处理文件(test.cmd)并根据需要进行调整。

@echo off
setlocal
set "Project_Name=Proj_1 Something Somethingelse"
for %%i in (%Project_Name%) do (
  set First_word=%%i
  goto done
  )
:done
echo C:\Testfolder\%First_Word%\Sub\
endlocal

示例输出:

> test
C:\Testfolder\Proj_1\Sub\

进一步阅读

答案2

这里为您提供了两个需要较少代码的附加选项。

第一个使用FOR /F命令的自然分隔符。这样您不需要使用 goto 命令来跳出循环。

@echo off
set "Project_Name=Proj_1 Something Somethingelse"
for /F %%G IN ("%Project_Name%") do set "First_word=%%G"
echo C:\Testfolder\%First_Word%\Sub\

第二种技术使用一个巧妙的技巧,即使用SET命令根据分隔符来拆分行,方法是用另一个 set 命令替换分隔符。在我的版本中,我使用SET带有选项的/P,这样字符串中的任何其他单词都不会分配给变量。

@echo off
set "Project_Name=Proj_1 Something Somethingelse"
(set "First_Word=%Project_Name: =" & set /p "=%" )<nul >nul
echo C:\Testfolder\%First_Word%\Sub\

相关内容