Переименование файлов с указанным c именем папки в пути к файлу с помощью пакетного программирования - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть путь к папке:

C:\form\Regression\Measurments\scene1\a\file.txt
C:\form\Regression\Measurments\scene2\a\file.txt

Я хочу вывод:

C:\form\Regression\Measurments\scene1\a\scene1.txt
C:\form\Regression\Measurments\scene2\a\scene2.txt

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

@echo OFF

SET Dir=C:\form\Regression\Measurments

for /D /r %Dir% %%a in (*) do (
    ECHO Processing folder: %%a
    for %%b in (%%a\*.txt) do (
        setlocal EnableDelayedExpansion
        rem create here your new name of file
        set FileName=%%~nxb 
        echo File: %%b - !FileName!
        ren %%b !FileName!
    )
)

PAUSE

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

У вас есть подкаталоги и файлы с определенной глубиной иерархии c, поэтому я рекомендую не использовать for /R: вместо этого используйте для / D to first get the sub-directories scene *, then build the complete path to the file file.txt` и переименуйте это, учитывая, что оно существует.

Вот пример того, что я имею в виду:

@echo off
rem // Enumerate the desired directory hierarchy depth:
for /D %%I in ("C:\Form\Regression\Measurements\scene*") do (
    rem // Built the full path to the file and rename when found:
    if exist "%%~I\a\file.txt" ren "%%~I\a\file.txt" "%%~nI.*"
)
0 голосов
/ 28 апреля 2020

Основываясь исключительно на предоставленной вами информации, следующий пример должен работать так, как вам требуется.

Убедитесь, что при необходимости измените базовый каталог в строке 2, (обращая особое внимание к вашему правописанию, так как правильное написание - «Мера e ments»)

@Echo Off
Set "baseDir=C:\form\Regression\Measurments"
For /D %%G In ("%baseDir%\*") Do For /D %%H In ("%%G\*"
) Do For /F "Skip=6 Tokens=3" %%I In (
    '%__AppDir__%robocopy.exe /L /NFL /NDL /NJH "%%H" Null *.txt 2^> NUL'
) Do If "%%I"=="1" (Echo Processing %%H & Ren "%%H\*.txt" "%%~nxG.txt")
Pause

Чтобы узнать, как это работает, прочитайте информацию об использовании для каждой из команд используется.

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