Переименование и перезапись файлов с помощью подстановочного знака в Windows - PullRequest
0 голосов
/ 13 сентября 2018

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

Например, у меня есть следующие файлы в моем текущем каталоге

deployment.properties
wrapper.conf
config.properties

Позже я сгенерирую другой набор файлов, подобный этому

deployment.properties.tokenized
wrapper.conf.tokenized
config.properties.tokenized

Наконец, я хочу заменить существующие файлы конфигурации (в первом блоке кода), используя версию * .tokenized, и удалить файлы с токенами.

В Linux следующее может сделать работу. Но я не знаю, как это сделать в Windows

for f in *tokenized; 
  do mv "$f" "`echo $f | sed s/tokenized//`";
done

Я попытался использовать MoveShell, Rename-Item, но все еще не могу понять, как это сделать. Может ли кто-нибудь помочь? сценарии bat / powershell приветствуются. Использование цикла тоже хорошо. Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Этот сценарий PowerShell должен выполнять работу:

Get-ChildItem *.tokenized | % {
    move $_.Name ([System.IO.Path]::GetFileNameWithoutExtension($_.Name)) -Force
}
0 голосов
/ 13 сентября 2018

Это почти тот же код, но в cmd / batch files у нас есть доступ к элементам имени файла.

Из командной строки

for %a in (*.tokenized) do move /y "%a" "%~na"

Или, для пакетного файла (вам нужно экранировать заменяемый параметр for)

for %%a in (*.tokenized) do move /y "%%a" "%%~na"

Поскольку расширение файла (текст после последней точки) равно .tokenized, когда вы запрашиваете только имя (без расширения) файла, на который ссылается (%%~na), вы получаете исходное имя файла.

...