Пожалуйста, помогите, вот что я ищу, он должен попросить logs\output
пути, пользователь поставляется путь должен заменить text1.txt
вход Пользователь должен заменить строки другого файла
--text1.txt
содержит c:\temp
Как и когда пользовательский пульт logs\output
, он должен заменить только указанный выше путь text1.txt
.
Это код партии, который у меня есть, он не работает.
@echo off
echo.
SET /P USERDEST=Please enter output\Logs path:c:\temp\path
echo output\logs:c:\temp\path
call:DoReplace "C:\temp" "c:\temp\path" test1.txt
exit /b
:DoReplace
echo ^(Get-Content "%3"^) ^| ForEach-Object { $_ -replace %1, %2 } ^| Set-Content %4>Rep.ps1
Powershell.exe -executionpolicy ByPass -File Rep.ps1
if exist Rep.ps1 del Rep.ps1
echo Done
pause
Я начинающий использовать пакетный файл, поэтому, пожалуйста нести со мной за мои ошибки и недоразумения Вот что получилось после использования вашего кода. Как вы видите ниже, ввел новый путь c: \ temp \ 1234, также показал путь эха, который я дал некоторое время и выбросил ниже ошибки. Файл fyi..test1.txt присутствовал в исполняемом пути, у test1.txt уже был установлен путь «c: \ temp», , что я ожидал, это мой новый путь «c: \ temp \ 1234» должен был обновить test1. txt "c: \ temp" to "c: \ temp \ 1234" –
Введите путь \ Logs пути (или ENTER для по умолчанию): c: \ temp \ 1234 output \ logs: c: \ temp \ 1234 Set -Content: входной объект не может быть привязан, поскольку он не содержит i nformation, необходимый для привязки всех обязательных параметров: Путь В E: \ Auto \ Rep.ps1: 1 char: 99 + (Get-Content "test1. txt ") | ForEach-Object {$ _ -replace "C: \ temp", "c: \ temp \ 1234"} | Set-Content <<<< + CategoryInfo: InvalidArgument: (C: \ Temp \ Журнал: String) [Set-Конте нт], ParameterBindingException + FullyQualifiedErrorId: InputObjectMissingMandatory, Microsoft.PowerShell .Commands.SetContentCommand –
'бэр (где вы берете% 4 из? Вы вызываете только три аргумента) '. Я тестировал с «test2.txt» как четвертый параметр в строке 'call', и он работал нормально. – Stephan