пакетный цикл через файл в папке - PullRequest
0 голосов
/ 18 декабря 2018

все, я новичок с небольшим знанием сценариев.Я сделал этот .bat, который отлично работает:

for /l %%x in (1, 1, 4) do (
echo %%x
type A%%x.xml + tail.xml >> v%%x.stage
)

Он делает циклы 4 раза, объединяя XML-файлы внутри папки..Bat находится в той же папке, что и XML для слияния.

Но мне нужно вручную отредактировать число 4, если я хочу выполнить цикл из 10. Есть ли способ сделать цикл с использованием суммыфайла в папке?Допустим, в папке 15 файлов .xml, поэтому цикл будет выполняться 15 раз.Я пробовал разные циклические коды, которые я нашел при переполнении стека, но я не смог заставить их работать :( Можете ли вы помочь мне, пожалуйста?

большое спасибо

ОБНОВЛЕНИЕ: спасибо @Squashman, так что мой код должен быть примерно таким, как сейчас, верно?

for %%x IN (*.xml) do set /a count+=1
echo %%x
type A%%x.xml + tail.xml >> v%%x.stage

1 Ответ

0 голосов
/ 18 декабря 2018

Если диапазон чисел гарантированно будет смежным, предложение Сквошмана будет работать хорошо.

Чтобы получить наибольшее число независимо от возможных пробелов, вы можете использовать:

:: Q:\Test\2018\12\18\SO_53837368.cmd
@Echo off&SetLocal EnableDelayedExpansion
set "Max=0"
For /f "delims=a." %%A in ('Dir /B "a*.xml"') do (
    Set /A "Num=%%A"
    if !Num! gtr !Max! set "Max=!Num!"
)
Echo Max number is: %Max%

он разделяет имя файла между лидирующей точкой a и точкой в ​​расширении, сохраняя единственное число.
Set / A используется для исключения возможных несоответствий с ненулевыми значениями.

...