Как получить последнее имя файла в команде dir? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть папка журнала с файлами со следующими именами:

number.txt (пример: 1.txt 3.txt 55.txt ...)

Имя (число) не обязательно означает, что оносамая последняя дата.

Я хочу написать пакетный скрипт (.bat), который получит самый большой номер файла и создаст новый текстовый файл со следующим номером (если самым большим номером файла был X, я хочу создатьновый текстовый файл с именем X + 1)

, например:

Предположим, у нас есть эти файлы в папке журнала:

1.txt 
5.txt
99.txt

После запуска сценария (.bat) необходимо создать новый файл 100.txt

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

«Как я могу это сделать?» не является действительным вопросом здесь ... Однако I делает это так:

@echo off

for %%i in (*.txt) do set /A "i=%%~Ni-next+1,next+=((i>>31)+1)*i"
rem/>%next%.txt
0 голосов
/ 16 ноября 2018

Я действительно не поддерживаю не по теме вопросы, но это действительно не ракетостроение:

@echo off
setlocal enabledelayedexpansion
set cnt=0
for %%i in (*.txt) do (
    set "num=%%~ni"
    if !num! GTR !cnt! set cnt=!num!
)
set /a newfile=cnt+1
type nul > %newfile%.txt

Это действительно прямо вперед. Мы устанавливаем счетчик 0 (cnt=0).

Перебрать все файлы и удалить расширение, используя только имя из токена (%%~ni), поэтому у нас есть только номер, оставленный до присвоения переменной num=%%~ni.

Затем мы сопоставляем номер файла со счетчиком, if номер файла больше, чем счетчик, мы set номер счетчика с тем же значением, пока мы не зациклились на наибольшем числе, а затем просто принять это значение +1 и создайте файл с помощью type nul > newnumber.txt

См. Множество справок по командам, используемым при простом запуске for /?, if /?, set /? и setlocal /? из cmd.exe окна терминала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...