Удалить начало имени файла до _

Так что я полный нуб в пакетном программировании, но у меня есть небольшая программа, которая перемещает файлы в определенные папки на основе имени файла:

@echo off
for %%a in (*.jpg) do (
echo processing "%%a"
  for /f "tokens=1 delims=_" %%b in ("%%~nxa") do (
     move "%%a" "%%b" >nul
  )
)
pause

Я хочу расширить эту программу, чтобы переименовать некоторые файлы. Файлы, которые программа перемещает, называются так: «0_107» или «151_107». которые перемещаются в папки с именами «0» и «151» соответственно.

Теперь я также хочу, чтобы он обрезал все до и включая подчеркивание. Это означает, что "151_107" по-прежнему следует переместить в папку "151", но файл должен называться "107".

Надеюсь, это имеет смысл - спасибо заранее

С уважением


person AVP    schedule 01.03.2016    source источник


Ответы (1)


Вам нужно переместить FOR-параметр в переменную, затем вы можете удалить ведущую часть с помощью синтаксиса *<text>=.

setlocal EnableDelayedExpansion
for %%a in (*.jpg) do (
    echo processing "%%a"
    for /f "tokens=1 delims=_" %%b in ("%%~nxa") do (
        set "name=%%~a"
        set "name=!name:*_=!"
        echo New destination %%b\!name!
        move "%%~a" "%%b\!name!" >nul
    )
)
person jeb    schedule 01.03.2016
comment
Прошу прощения за мое невежество, но как это будет выглядеть при реализации в моем фрагменте кода? - person AVP; 01.03.2016