-2

В Windows я пытаюсь переименовать несколько файлов с условным обозначением « Name (2016) », чтобы оно было « 2016 - Name ».

Я попытался написать сценарий PowerShell, но у меня возникли некоторые проблемы, и я хотел бы попросить помощи в выполнении этой задачи из-за отсутствия полного понимания синтаксиса и т.д.

Сценарий, приведенный ниже, не работает из-за того, что « \(.*\) » Должен быть «тем, что находится внутри скобок», я думаю ...

Моя работа (не работает)

get-childitem | foreach { rename-item $_ $_.Name.Replace("\(.*\)", "") } 

Идея, которую я имею в виду, состоит в том, чтобы как-то установить переменную на то, что находится внутри круглых скобок, как « Name (x) », а затем переименовать ее в « x - Name ». Я потерян и нуждаюсь в помощи, но это моя работа.

1 ответ1

1

Так как вы показали свою работу, и никто больше ее не попробовал, я подытожил приведенный ниже Batch скрипт, так как тег « Batch в вашем вопросе указывает на то, что вы ищете решение.

Обязательно установите путь к папке переменной SET SrcDir= ниже, где файлы существуют. Основываясь на предоставленных вами примерах имен файлов, я проверил, и это с моей стороны работало со 100% точностью.

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

Пример пакетного скрипта

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION
SET SrcDir=C:\Users\User\Desktop\Test

FOR /F "TOKENS=1-3 DELIMS=() " %%A IN ('DIR /B /A-D "%SrcDir%\* (*)*"') DO (
    SET "part1=%%~A" 
    SET "part2=%%~B" 
    SET "part3=%%~C"
    REN "%SrcDir%\!part1! (!part2!)!part3!" "!part2! - !part1!!part3!"
)
GOTO :EOF

Дополнительные ресурсы

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