Усекать конкретные файлы - PullRequest
1 голос
/ 06 июня 2019

У меня есть несколько папок с одним и тем же каталогом, которые названы так:

001_Trial1
002_Trial2
003_Trial3
Trial4
Trial5
004_Trial6
005_Trial7

и т.д ...

Я хочу переименовать папки, чтобы получить

Trial1
Trial2
Trial3
Trial4
Trial5
Trial6

и т.д ...

Я попытался обрезать его, но проблема в том, что он также удалит четыре первых символа, когда папка "Trial3", она переименует ее в "3".

SetLocal DisableDelayedExpansion
For /D %%A In ("%1\*") Do (

    Set "_d=%%~nxA"
    SetLocal EnableDelayedExpansion
    If Not Exist "%%~dpA!_d:~4!" Ren "%%A" "!_d:~4!"
    EndLocal
)

Я хочу, чтобы все выходы начинались с "Trial"

1 Ответ

0 голосов
/ 06 июня 2019

Первое, что я заметил, глядя на ваш код, это то, что вам нужно заменить %1 на %~1, чтобы избавиться от кавычек.

Я бы тогда использовал for /f, чтобы обрезатьпервая часть ваших имен папок, поэтому вам не нужно delayedExpansion, и код может обрабатывать имена папок с более или менее цифрами в начале (и, конечно, не переименовывать папки, которые уже имеют требуемый формат имени).

for /D %%D in ("%~1\*") do (
    for /F "tokens=2 delims=_" %%N in ("%%~nD") do (
        if not exist "%%~dpD%%~N%%~xD" ren "%%~fD" "%%~N%%~xD"
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...