Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从windows命令提示符在文件中搜索和替换_Powershell_Templates_Batch File - Fatal编程技术网

Powershell 从windows命令提示符在文件中搜索和替换

Powershell 从windows命令提示符在文件中搜索和替换,powershell,templates,batch-file,Powershell,Templates,Batch File,我有两个文件 properties.txt key1=value1 key2=value2 以及使用此文件的template.txt $key1 xcvsdf sfd $key1 sdf $key2 lorem $key2 ipsum 我想用template.txt替换properties.txt中的所有属性,并将其写入文件。 我不希望它在python\java运行时上运行,因为它应该在任何没有预先要求的机器上运行 我如何使用powershell做到这一点?批处理文件?假设这需要能够在P

我有两个文件 properties.txt

key1=value1
key2=value2
以及使用此文件的template.txt

$key1 xcvsdf sfd $key1 sdf 
$key2 lorem $key2 ipsum 
我想用template.txt替换properties.txt中的所有属性,并将其写入文件。 我不希望它在python\java运行时上运行,因为它应该在任何没有预先要求的机器上运行


我如何使用powershell做到这一点?批处理文件?

假设这需要能够在PowerShell 2.0上运行,我会这样做:

# Read template from file
$template = Get-Content .\template.txt

# Copy template to result variable
$result = $template

# Loop through list of properties
Get-Content C:\dev\properties.txt |ForEach-Object{
    # Split each line into key-value pairs
    $key,$value = $_ -split '=',2
    # Replace the placeholder with the appropriate value
    $result = $result -replace ('\${0}' -f $key),$value
}

# Output final result
$result |Out-File .\result.txt

假设这需要能够在PowerShell 2.0上运行,我会这样做:

# Read template from file
$template = Get-Content .\template.txt

# Copy template to result variable
$result = $template

# Loop through list of properties
Get-Content C:\dev\properties.txt |ForEach-Object{
    # Split each line into key-value pairs
    $key,$value = $_ -split '=',2
    # Replace the placeholder with the appropriate value
    $result = $result -replace ('\${0}' -f $key),$value
}

# Output final result
$result |Out-File .\result.txt
output.txt:

value1 xcvsdf sfd value1 sdf
value2 lorem value2 ipsum
此代码删除template.txt文件中可能出现的感叹号。如果需要,此点可能是固定的

output.txt:

value1 xcvsdf sfd value1 sdf
value2 lorem value2 ipsum

此代码删除template.txt文件中可能出现的感叹号。这一点可能是固定的,如果需要的话。

在提问时,最好在你已经尝试过的事情上表现出一些努力。您有一个代码编写请求(不鼓励这样做),但您甚至还没有确定语言。我不同意您的看法:我想在Windows上不使用运行时环境进行搜索和替换。下面的两个答案mathias和@Aacini正是我想要的。当问问题时,你最好在你尝试过的事情上表现出一些努力。您有一个代码编写请求(不鼓励这样做),但您甚至还没有确定语言。我不同意您的看法:我想在Windows上不使用运行时环境进行搜索和替换。下面的两个答案mathias和@Aacini正是我想要的。