suniti dinesh Ответов: 1

Заменить строковое значение в файл с именем


я хочу заменить строку в файле именем файла. У меня есть 3000 файлов с разными именами файлов. Есть ли какой-нибудь способ, который я могу сделать с помощью пакетного скрипта, я совершенно новичок в написании сценариев. пожалуйста, помогите мне в этом

например: у меня есть имя файла как 12345678.txt внутри файла у меня есть несколько записей вместе со строкой 99999999. теперь я хочу заменить 99999999 именем файла 12345678.

У меня есть файлы в C:\DATA\

Что я уже пробовал:

Я совершенно новичок в написании сценариев. пожалуйста, помогите мне

CHill60

Если бы это был одноразовый вариант, я бы, вероятно, использовал Notepad++, чтобы сделать это для себя, а не писать сценарий

suniti dinesh

Привет, Остынь. Спасибо. У меня есть 3000 файлов, и каждый файл имеет разные имена файлов(1000001.txt, 1000002.txt....1003000.txt). как я могу заменить данные(99999999) в каждом файле на номер файла в notepad++. если мы можем это сделать, пожалуйста, научите меня, как это сделать.

RedDk

Покажите код вашего пакетного файла ... пока что.

1 Ответов

Рейтинг:
12

Richard Deeming

использовать PowerShell:

$files = Get-ChildItem -path C:\Data\ -filter *.txt
foreach ($file in $files)
{
    $content = Get-Content $file
    if ($content -match "99999999")
    {
        $content = $content -replace "99999999", $file.BaseName
        Set-Content $file $content
    }
}


suniti dinesh

Привет, Ричард, большое спасибо за ваш ответ. когда я пытаюсь запустить скрипт powershell. Я получаю следующую ошибку
Get-Content : не удается найти путь 'C:\Windows\system32\70002000-да.ЛДР", потому что его не существует.
В C:\Script\Powershell.ps1:6 char:16
+ $content = Get-Content $file
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Windows\system32\70002000.LDR:String) [Get-Content], ItemN
otFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Команды.GetContentCommand

suniti dinesh

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

Richard Deeming

Я думал, ты смотришь на файлы внутри. C:\Data\?

Если вы просматриваете файлы в C:\Windows\System32\, вам нужно будет убедиться, что вы используете PowerShell с повышенными правами.

Кроме того, если вы изменили Get-ChildItem вызов для возврата скрытых файлов с помощью -Force параметр, вам, вероятно, нужно будет передать -Force параметр к Get-Content позвони тоже.

suniti dinesh

Извините за путаницу, Ричард. Я еще не перешел на путь в командной строке powershell. теперь я проверил, как вы предлагали. Он работал как чемпион. Большое вам спасибо за вашу помощь

suniti dinesh

еще одно маленькое сомнение, например, после извлечения значения 9999999 из файла и если я хочу увеличить значение на 1 (например: 10000000,10000001,10000001...до тех пор, пока файлы в папках не закончатся) и замените его увеличенным значением вместо копирования имени файла и замены.

Richard Deeming

$i = 10000000
foreach ($file in $files)
{
    $content = Get-Content $file
    if ($content -match "99999999")
    {
        $content = $content -replace "99999999", $i++
        Set-Content $file $content
    }
}