Для данного числового имени файла существует несколько файлов, которые существуют в каталоге. Этот каталог имеет сотни этих числовых имен файлов. Я хочу создать папку для каждого из числовых имен файлов и переместить файлы в соответствующую папку. Я начал с:

  SET /P M= ENTER THE FOUR-DIGIT FILENAME
  MKDIR "%M%"
  MOVE "%M%.*" "%M%"

Это прекрасно работает, но я должен ввести каждое имя файла. Можно ли разрешить пользователю вводить только первые два числа в имени файла, чтобы я мог создавать папки и перемещать файлы по 100 одновременно?

1 ответ1

0

Следующий скрипт должен работать на вас. Основное объяснение комментариями rem . Дополнительная информация о командах цикла, на подстроках, на for параметров модификатора и т.д.

@ECHO OFF >NUL
SET /P "M=ENTER THE TWO-DIGIT FILENAME "
    rem ensure 2-digit
set "M=00%M%"
    rem get last two characters
set "M=%M:~-2%"
for /L %%I in (0,1,9) do (
    for /L %%J in (0,1,9) do (
            rem here %M%%%I%%J = four-digit name
            rem exists at least one file starting with that 4 digits?
        if exist "%M%%%I%%J*.*" (
                rem create directory; error message throw away by 2>NUL
            MKDIR "%M%%%I%%J" 2>NUL
                rem move all files starting with 4 digits
                rem      but exclude directories by /a:-d
            for /F "tokens=*" %%G in ('dir /b /a:-d "%M%%%I%%J*.*"') do ( 
                MOVE "%%~G" "%M%%%I%%J\"
            )
        )
    )
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .