1

Я хочу скопировать файл в определенное место, пользователю 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\

Есть ли способ сделать это в пакетном режиме?

2 ответа2

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\

Дальнейшее чтение

0

Вот две дополнительные опции, которые требуют меньше кода.

Первый использует натуральные разделители команды 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\

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .