Как получить последний элемент разделенной строки в пакетном режиме Windows? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть этот windows batch файл, чтобы облегчить работу моих разработчиков:

@echo off
echo.

set NEW_COMPONENT=%1
set NEW_COMPONENT=%NEW_COMPONENT:/=\%
set NEW_COMPONENT_TO_SPLIT=%NEW_COMPONENT:/= %

REM get the component name (last item form '/' spearated array)
for %%a in ("%NEW_COMPONENT_TO_SPLIT%") do set "COMPONENT_NAME=%%~nxa"

set HTML=src\%NEW_COMPONENT%\%COMPONENT_NAME%.html
set SCSS=src\%NEW_COMPONENT%\_%COMPONENT_NAME%.scss
set JS=src\%NEW_COMPONENT%\_%COMPONENT_NAME%.js
set IMG=src\%NEW_COMPONENT%\img

mkdir src\%NEW_COMPONENT%
echo | set /p x=created folder: src\%NEW_COMPONENT%\

echo. 2>%HTML%
echo | set /p x=created file: %HTML%

echo. 2>%SCSS%
echo | set /p x=created file: %SCSS%

echo. 2>%JS%
echo created file: %JS%

mkdir %IMG%
echo | set /p x=created folder: %IMG%\

echo.

Теперь они просят меня поместить import %COMPONENT_NAME% from '%PARENT_COMPONENT'; строку в первую строку родительского компонента .js файлов, чтобы автоматически связатьновый компонент и родительский элемент.

Пользователь может использовать это следующим образом:

create-component.bat components/header/nav

В этом случае %COMPONENT_NAME% будет nav, но как я могу поймать элемент до последнеговещь?В этом случае это будет header

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

for может работать с относительными путями.Так что components\header\nav\.. - это то же самое, что и components\header.Из этого пути вам нужен последний элемент %%~nxA:

set "NEW_COMPONENT_TO_SPLIT=components\header\nav"
for %%A in ("%NEW_COMPONENT_TO_SPLIT%\..") do set "COMPONENT_NAME=%%~nxA"
echo %COMPONENT_NAME"
0 голосов
/ 08 февраля 2019

Измените ваш цикл for на следующий (исправлен первый цикл и добавлена ​​строка):

for %%a in ("%NEW_COMPONENT_TO_SPLIT%") do set "COMPONENT_TMP=%%~pa"
for %%i in ("%COMPONENT_TMP:~0,-1%") do set "COMPONENT_NAME=%%~nxi"

Итак, ваш исправленный скрипт:

@echo off
echo.

set NEW_COMPONENT=%1
set NEW_COMPONENT=%NEW_COMPONENT:/=\%
set NEW_COMPONENT_TO_SPLIT=%NEW_COMPONENT:/= %

REM get the component name (last item form '/' spearated array)
for %%a in ("%NEW_COMPONENT_TO_SPLIT%") do set "COMPONENT_TMP=%%~pa"
for %%i in ("%COMPONENT_TMP:~0,-1%") do set "COMPONENT_NAME=%%~nxi"

set HTML=src\%NEW_COMPONENT%\%COMPONENT_NAME%.html
set SCSS=src\%NEW_COMPONENT%\_%COMPONENT_NAME%.scss
set JS=src\%NEW_COMPONENT%\_%COMPONENT_NAME%.js
set IMG=src\%NEW_COMPONENT%\img

mkdir src\%NEW_COMPONENT%
echo | set /p x=created folder: src\%NEW_COMPONENT%\

echo. 2>%HTML%
echo | set /p x=created file: %HTML%

echo. 2>%SCSS%
echo | set /p x=created file: %SCSS%

echo. 2>%JS%
echo created file: %JS%

mkdir %IMG%
echo | set /p x=created folder: %IMG%\

echo.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...