Пакетная петлевая переменная манипуляция - PullRequest
0 голосов
/ 02 апреля 2020

У меня небольшая проблема с файлом .bat, который мне нужно создать, чтобы манипулировать спецификацией c .csv. Я хочу, чтобы .bat прочитал строку файла, а затем проверил первые три буквы этой строки. В конце должны быть n-файлы, где файл xxx.csv содержит строки input.csv с xxx в качестве первых трех букв строки.

Перво-наперво, я даже не знаю, возможно ли сделать это эту работу в пакетном файле, потому что файл имеет> 85000 строк и может даже стать намного больше. Поэтому, если это невозможно, вы можете прямо сказать мне об этом.

for /f "delims=" %%a in (input.CSV) DO (
echo %%~a:~0,3
pause
)

Я хочу «вывести» первые три буквы %% a.

Было бы здорово, если бы вы могли помочь я.

Фил

1 Ответ

0 голосов
/ 02 апреля 2020

Подстановка подстрок работает только с переменными среды (%var%), но не с метавариабельными (%%a) (как уже прокомментировал Mofi). И поскольку вы устанавливаете и используете переменную в одном и том же командном блоке, вам необходимо отложенное расширение :

setlocal enabledelayedexpansion
for /f "delims=" %%a in (input.CSV) DO (
  set "var=%%~a"
  echo !var:~0,3!
  pause
)

(существуют методы без отложенного расширения, но они используют call что тормозит)

...