Я хотел создать небольшой скрипт для поиска и замены нескольких строк в файле (используя комбинацию пакетной и PowerShell). Файлы всегда разные, поэтому мне всегда нужно зайти в пакет и изменить имя файла Get-Content
и Out-File
. Теперь я добавил приглашение ввести имя файла, и я даю это параметру, поэтому я мог бы как-то найти и отредактировать $filename.txt
, например.Найти файл (получить контент) с переменной в имени файла
Здесь нормальный код PowerShell с заменой только одну строку (я интегрировать это в один пакетный файл позже снова):
$filename = Read-Host -Prompt 'Input filename'
(gc $filename.txt) -replace 'foo', 'bar' | Out-File $filename.txt
Поскольку этот скрипт лежит в той же папке, как файлы которыми я не понадобится путь.
Я также узнал, что gc
не может читать переменные, что является именно моей проблемой здесь: я получаю код ошибки, который аргумент не может быть привязан к «пути», потому что это NULL.
Я не мог найти ничего подобного, нашел много тем о том, как переменные вне файла или как получить содержимое файла в переменной, но ничего не подходит для моего дела, поэтому я бы очень признателен за любые помогите от вас, ребята!
Я не понимаю почему вам нужны как пакетные, так и PowerShell. Если вы работаете в PowerShell, я думаю, вам будет лучше всего отбросить пакет. Если вы хотите работать с пакетом, вы можете рассмотреть мою [JREPL.BAT гибридную JScript/пакетную утилиту] (http://www.dostips.com/forum/viewtopic.php?t=6044). Вы можете использовать SET/P для запроса значения для переменной FileName. Тогда вы могли бы просто использовать 'call jrepl" foo "" bar "/ L/F '% FileName%"/O -' – dbenham
Я думаю, что я уже нашел эту партию, но я очень смущался со всем содержанием ха-ха, d Фактически просто нужно добавить эту часть в самом конце? Я знал об этом параметре/P, но я попытался использовать это вместе с powershell в одной партии, и это не сработало. Powershell, потому что люди продолжали говорить: поскольку powershell prefixed скорее используйте это вместо пакета. Может быть, потому что, как и в вашей партии, мне нужно много кодирования для создания пакетной работы так же просто, как powershell. Я хотел интегрировать его в пакетном режиме, чтобы друзья могли его использовать. – Shoru