2016-12-05 8 views
1

В настоящее время у меня есть командный файл, который проходит через текстовый файл и назначает каждую строку в массив. Я хочу перебирать цикл и удалять определенное количество символов из каждого значения в массиве. Возможно ли это сделать?Манипулирование строк в массивах в пакетном файле?

@ECHO off 

findstr /C:"number" /C:"type" testFile.txt > oneresult.txt 
set "file=oneresult.txt" 
set /A i=0 
timeout /t 1 
echo ---------------Results--------------- > results.txt 
for /f "tokens=*" %%x in (oneresult.txt) do (
call echo %%x >> results.txt 
call set array[%i%]=%%x 
set /A i+=1 
) 

call echo %i% files received >> results.txt 
del "oneresult.txt" 

Так что сейчас он просто печатает извлекаемые строки из testfile.txt, а затем они в конечном итоге помещены в Result.txt. Я бы хотел, чтобы все строки, полученные из файла testFile.txt, удалили первые 10 символов. Если есть более простой способ, дайте мне знать. До сих пор это то, что я нашел, но я также немного партийный noob.

Просто понял его без массива и размещения ответа на кого-либо еще, что может быть поиск в будущем:

@ECHO off 

findstr /C:"number" /C:"type" testFile.txt > oneresult.txt 
set /A i=0 
timeout /t 1 
echo ---------------Results--------------- > results.txt 

for /f "tokens=*" %%x in (oneresult.txt) do (
setlocal enabledelayedexpansion 
call set print=%%x 
call set newprint=!print:~32! 
call echo !newprint! >>results.txt 
endlocal 
set /A i+=1 
) 

call echo %i% files received >> results.txt 
del "oneresult.txt" 
+1

Все детали управления массивом в пакетных файлах объясняются в [этом ответе] (http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990#10167990). Например: 'set array [! I!] = %% x' и' for %% i in (! I!) Do echo! Array [%% i]: ~ 32! ' – Aacini

ответ

0
  • Вы можете использовать несколько вызовов в вашем коде, не имея в виду, что эти pseudo calls обычно используются для разного типа замедленного расширения, не требующего setlocal enabledelayedexpansion, но для удвоения процентных знаков.
  • промежуточный файл oneresult не нужен, один для/f для синтаксического анализа вывода findstr.
  • Один набор скобок вмещающих все выходные линии могут перенаправлять results.txt

@ECHO off 
set /A i=0 
(
    echo ---------------Results--------------- 
    for /f "tokens=*" %%x in (
    'findstr /C:"number" /C:"type" testFile.txt' 
) do (
    set print=%%x 
    call echo:%%print:~32%% 
    set /A i+=1 
) 
    call echo %%i%% files received 
) > results.txt 

Следующий код с setlocal enabledelayedexpansion является функциональным идентичных

@ECHO off&Setlocal EnabledelayedExpansion 
set /A i=0 
(
    echo ---------------Results--------------- 
    for /f "tokens=*" %%x in (
    'findstr /C:"number" /C:"type" testFile.txt' 
) do (
    set print=%%x 
    echo:!print:~32! 
    set /A i+=1 
) 
    echo !i! files received 
) > results.txt 
+0

@N. Spivs Просто из интереса вы сначала проверили мой ответ и теперь не отмечены: есть ли какая-либо ошибка в моей партии или у вас есть дополнительные вопросы? – LotPings

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

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