2014-11-21 2 views
0

Мне просто интересно, как вы должны установить значения токена из инструкции for в переменные в пакетном скрипте, а затем выполнить все действия, которые требуется вашему скрипту.Настройка значений маркеров на переменные

Myconfigfile.config имеет ниже линии:

C:\logs|logfolder1|*.log|30 
C:\logs|logfolder12|*.log|30 

Так у меня есть эта строка:

for /F "delims=| tokens=*" %%A in (Myconfigfile.config) do echo %%A 

я, что

location="tokens=1" 
subfolder="tokens=2" 
pattern="tokens=3" 
range="tokens=4" 

Тогда

echo the location is %location% 
echo the subfolder is %subfolder% 
echo the pattern is %pattern% 
echo the range is %range% 

Очевидно, что я мог бы сделать это с 4 для заявлений, но я подозреваю, что есть более эффективный способ сделать это.

ответ

1
setlocal enableDelayedExpansion 
    for /F "delims=| tokens=1-4" %%A in (Myconfigfile.config) do (
    set "location=%%A" 
    set "subfolder=%%B" 
    set "pattern=%%C" 
    set "range=%%D" 

     echo the location is !location! 
     echo the subfolder is !subfolder! 
     echo the pattern is !pattern! 
     echo the range is !range! 
    ) 
endlocal 
+0

работал как шарм! Большое спасибо – Tee

0

Это непроверенное:

@echo off 
setlocal EnableDelayedExpansion 

rem Define the *names* of each one of the desired tokens: 
rem (this is the only line that require changes) 
set namesOfTokens=location subfolder pattern range 


rem Assemble the correct "tokens=..." and set commands 
set "tokens= ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
set "setCommands=" 
set i=0 
for %%a in (%namesOfTokens%) do (
    set /A i+=1 
    for %%i in (!i!) do set setCommands=!setCommands! set "%%a=%%%%!tokens:~%%i,1!" ^& 
) 

rem DO IT! 
for /F "delims=| tokens=1-%i%" %%A in (Myconfigfile.config) do %setCommands:~0,-1% 

echo the location is %location% 
echo the subfolder is %subfolder% 
echo the pattern is %pattern% 
echo the range is %range% 

Это очень важно, что последний символ в долгосрочной перспективе для команды будет «&» характер. Пожалуйста, сообщите результат ...

+0

спасибо, npocmaka уже прибил его :) – Tee

+0

Извините. Мой ответ совершенно иной, чем тот, который был нпкмакой. Мой метод позволяет вставлять/переупорядочивать/удалять любое количество токенов, изменяя только одну строку. Вы могли получить другую информацию, просто введя: 'for /?' (Что я неправильно предположил, что вы уже знаете ...) – Aacini