CMD BAT как узнать и переименовать файл - PullRequest
0 голосов
/ 31 января 2019

У меня есть папка с именем 1830AE16C excel

Я хочу использовать 1830AE16C для переименования файлов в этой папке.

(До)

1_1234AE16C
2_5559AE15C
4_1000AE16E_pay

(После)

1_1830AE16C
2_1830AE16C
4_1830AE16C_pay

Я пробовал это:

@echo off

Setlocal enabledelayedexpansion

for %%I in (.) do set CurrDirName=%%~nxI

   SET Replace=%CurrDirName: DOC=%
   ECHO %Replace%     

Set /p Pattern="Old name: "


For %%a in (*%Pattern%*.*) Do (
    Set "File=%%a"
    Ren "%%a" "!File:%Pattern%=%Replace%!"
)

Как пропустить шаг запроса ввода текста для поиска?

1 Ответ

0 голосов
/ 01 февраля 2019

Я немного переписал твой сценарий.Он больше не использует переменные, поэтому нет необходимости в отложенном расширении:

@echo off
for /d %%I in (*) do (
  for /f "tokens=1,*" %%A in ("%%I") do (
    Echo Foldername: %%I
    Echo First part: %%A
    Echo Secnd part: %%B
    for %%F in ("%%I\*") do (
      Echo Filename:   %%F
      for /f "tokens=1,2,* delims=_" %%X in ("%%~nxF") do (
        if "%%Z"=="" (
          ECHO ren "%%F" "%%X_%%A"
        ) else (
          ECHO ren "%%F" "%%X_%%A_%%Z"
        )
      )
    )
  )
)

Я вставил несколько Echo строк для устранения неполадок / показа того, что происходит.
Я также отключил ren команды с ECHO по соображениям безопасности.Пожалуйста, проанализируйте вывод, если это именно то, что вам нужно, прежде чем активировать их.

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