2017-02-13 7 views
1

пытается проложить 34/0/2 для двух цифр до 34/0/02. мой код. предложения ....?Как загружать нули в содержимое файла?

@echo off 
SETLOCAL enableDelayedExpansion 
FOR /F "tokens=1,2,3,4,5* delims=,/" %%a IN (temp1.csv) do (
    echo orig %%a/%%b/%%c,%%d,%%e 
    echo new %%a/%%b/%c:~-2%,%%d,%%e >> temp3.csv 
) 
type temp3.csv 

содержание temp1.csv файл

Gi-34/0/1,lpu,w-3-016ch1swA1p19_lag 
Gi-34/0/10,lpu,w-3-018ch1swA2p19_lag 
Gi-34/0/11,lpu,prodca1_lan_sec 
Gi-34/0/12,lpu,prodca2_lan_sec 
Gi-34/0/13,lpd, 
Gi-34/0/14,lpd, 
Gi-34/0/15,lpd, 
Gi-34/0/16,lpd, 
Gi-34/0/17,lpd, 
Gi-34/0/18,lpu,aix_to_hmc 
Gi-34/0/19,lpu,prodcafl1_lan_sec 
Gi-34/0/2,lpu,w-3-016ch1swA2p19_lag 
Gi-34/0/20,lpu,prodcafl2_lan_sec 
+0

Вы должны назначить %% с к переменной окружения в первую очередь. При этом добавьте нуль к фронту, затем потяните последние две позиции при выводе переменной. Вам нужно будет использовать задержанное расширение. – Squashman

+1

Есть 2 ошибки: 1. синтаксис расширения подстроки не может использоваться для ссылок 'for', поэтому вам нужно сначала присвоить его значение нормальной переменной среды; при этом взгляните на [задержанное расширение] (http://ss64.com/nt/delayedexpansion.html)! 2. Извлечение подстроки из однозначного числа не создает дополнительного нуля, поэтому вам нужно будет добавить начальный ноль заранее ... – aschipfl

ответ

2

Это проще, чтобы добавить текущее содержимое до 100 и взять две последние цифры. Вы ссылаетесь на var %c%, которого не было. Чтобы лучше отличить, я использую верхний регистр var !C! с задержкой расширения. Есть только 3 варса, а остальное - tokens=1-3*.

@echo off 
SETLOCAL enableDelayedExpansion 
Type Nul >temp3.csv 
FOR /F "tokens=1-3* delims=,/" %%a IN (temp1.csv) do (
    echo orig %%a/%%b/%%c,%%d 
    Set /A C=100 + %%c 
    echo new %%a/%%b/!C:~-2!,%%d >> temp3.csv 
) 
type temp3.csv 

Пример вывода:

new Gi-34/0/01,lpu,w-3-016ch1swA1p19_lag 
new Gi-34/0/10,lpu,w-3-018ch1swA2p19_lag 
new Gi-34/0/11,lpu,prodca1_lan_sec 
new Gi-34/0/12,lpu,prodca2_lan_sec 
new Gi-34/0/13,lpd, 
new Gi-34/0/14,lpd, 
new Gi-34/0/15,lpd, 
new Gi-34/0/16,lpd, 
new Gi-34/0/17,lpd, 
new Gi-34/0/18,lpu,aix_to_hmc 
new Gi-34/0/19,lpu,prodcafl1_lan_sec 
new Gi-34/0/02,lpu,w-3-016ch1swA2p19_lag 
new Gi-34/0/20,lpu,prodcafl2_lan_sec 

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

  • Нет связанных вопросов^_^