Я собрал этот PowerShell для вас. То, что происходит, описано в комментариях, которые я добавил. Комментарии начинаются с "#". Если ваши соглашения об именах файлов отличаются от вашего примера 'text-1.txt', вам придется изменить эту строку на соответствующие соглашения об именах $target_files = gci $working_dir\* -include 'text*.txt'
- в частности, что находится внутри аргумента -include
.
Просто обновите это, если необходимо, и переменную $working_dir
в этом скрипте, чтобы она соответствовала каталогу, с которым вы работаете.
# where to look for files
$working_dir = "C:\Users\userNameHere\Desktop\Folder123"
# Find the files with get-childitem, put into variable.
$target_files = gci $working_dir\* -include 'text*.txt'
# For every file, do the following
foreach($file in $target_files){
# Read the file content with get-content
$file_content = gc $file -raw
# Create regex pattern to find the number for replacing
$reg_pattern = '^.*\d+[.]'
# Get the number out of the filename.
$file.Name -match "\d+" | Out-null
[int]$file_number = $matches[0]
# If we find a Number followed by a period in the content, replace it with the number we found in the filename
if($file_content -match $reg_pattern){
$file_content -replace $matches[0],$file_number | sc $file
}
}
Вставьте это в блокнот, выполните file> save as> и измените выпадающий список для «Filetype» на «All Files (*.*)
». Введите имя сценария, а затем расширение файла .ps1
. Это сохранит его как файл powershell. Затем щелкните правой кнопкой мыши по этому файлу и выберите «Запустить с помощью Powershell».