我想将文件复制到某个位置,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\
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 为了- 有条件地执行命令多次。
答案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\