2015-10-12 4 views
1

Итак, мы запускаем сценарий резервного копирования для моей работы, и до сих пор у них просто был сценарий, который вытащил имя компьютера и использовал его в качестве создаваемой папки. Проблема, с которой мы сталкиваемся, заключается в том, что когда мы переходим к использованию сценария восстановления, он становится бесполезным.% Computername% До определенного символа для именования файлов

Наши имена компьютеров, например, SMITHT # -Year-A.

Но я бы хотел, чтобы командный скрипт не использовал все имя, потому что часто это используется, когда мы меняем год работы компьютера. И потому, что иногда есть числа после имени человека, существуют переменные длины, поэтому большая часть знаний, которые я нахожу при выборе точек старта и остановки, бесполезна.

Есть ли способ, чтобы пакет создавал папку, используя функцию% COMPUTERNAME%, сообщающую ей останавливаться на «-», поэтому все, что мы получаем, это имя и номер человека?

+0

посмотрите на 'for/F 'delims = - eol = -"% L in ("% COMPUTERNAME%") do (echo% L) '(подробнее см.' For /? '); при использовании этой строки в пакетном файле замените '% L' на' %% L' ... – aschipfl

+2

http://stackoverflow.com/questions/18820913/windows-batch-file-splitting-a-string-to- set-variables – indiv

+0

Спасибо! Похоже, это должно сработать! – Kteckie

ответ

1

Для того, чтобы разбить строку на определенном использовании символов for /F:

for /F "tokens=1 delims=- eol=-" %L in ("%COMPUTERNAME%") do (set SHORTNAME=%L) 

Эта команда сохраняет часть строки до (первого) - в переменную SHORTNAME.

Подробнее о размере for /? в окне консоли.

Чтобы использовать приведенную выше строку в сценарии партии, замените %L на %%L.

Смежные вопросы