Удалить пробелы между специальным символом и любым другим символом командного файла - PullRequest
0 голосов
/ 11 июня 2018

У меня есть пакетный файл, который получает имя человека (Имя, Фамилия) из 4-й строки в текстовом файле, а затем создает папку с этим именем, соединенную с "-ID", с помощью приведенного ниже сценария.

Проблема в том, что имя хранится в файле с большим количеством пробелов после фамилии, поэтому, когда я создаю папку, папка называется, например, "Firstname Lastname -ID".

Любой совет, как мне убрать пробелы между фамилией и символом "-", чтобы папка называлась "Firstname Lastname-ID"?

SET id=abc111
set "xprvar="
for /F "skip=3 delims=" %%i in ('type "C:\My folder\name.txt"') do if not defined xprvar set "xprvar=%%i"
set foldername=%xprvar%"-"%id%

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Было бы проще проверить, если бы вы опубликовали образцы данных

for /F "tokens=1,2skip=3 delims= " %%i in ('type "C:\My folder\name.txt"') do if not defined xprvar set "xprvar=%%i %%j"

Но что происходит с такими именами, как "Жан-Клод Ван Дамм"

0 голосов
/ 11 июня 2018

Вы можете использовать Call с метаварией %*, которая будет игнорировать любые завершающие пробелы.

Пример:

@Echo Off
Set "id=abc111"
For /F "Skip=3 Tokens=* UseBackQ" %%A In ("C:\My folder\name.txt") Do Call :Sub %%A & GoTo :Break
GoTo :EOF
:Break
Rem Your commands here
MD "%foldername%" 2>Nul
Pause
GoTo :EOF

:Sub
Set "foldername=%*-%id%"
GoTo :EOF

Вы также заметите, чтоэто работает с именами, такими как Jean-Claude Van Damme

Редактировать
Следующая модификация должна учитывать возможность того, что ваш текстовый файл не является стандартным текстовым файлом ASCII с использованием Windows CRLFокончания строки.

@Echo Off
Set "id=abc111"
For /F "Skip=3 Tokens=*" %%A In ('Type "C:\My folder\name.txt"') Do Call :Sub %%A & GoTo :Break
GoTo :EOF
:Break
Rem Your commands here
MD "%foldername%" 2>Nul
Pause
GoTo :EOF

:Sub
Set "foldername=%*-%id%"
GoTo :EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...