使用变量

时间:2016-12-07 08:28:23

标签: powershell replace textbox

在我的脚本中,我有一个文本框 - 用户在其中插入文本,而不是我想将文件中的文本(脚本先前创建的文本)更改为用户在文本框中插入的内容。

问题:它会删除我想要在文件中更改的部分 - 但它不会写入用户的文本。我也尝试在if循环中找到变量 - 它确实改变了我想要的文本,但是当我再次运行脚本时,它在禁用的文本框中写了旧文本。

我的脚本有点长,所以我不会发布所有内容,但这里是重要的部分。谢谢你的帮助!

#This creates a checkbox called dsp.z
$objDspCheckbox = New-Object System.Windows.Forms.Checkbox 
$objDspCheckbox.Location = New-Object System.Drawing.Size(20,40) 
$objDspCheckbox.Size = New-Object System.Drawing.Size(150,20)
$objDspCheckbox.Text = "dsp.z"
$objDspCheckbox.TabIndex = 0
$objForm.Controls.Add($objDspCheckbox)

#This creates the TextBox1 and put it on disable
$objTextBox1 = New-Object System.Windows.Forms.TextBox 
$objTextBox1.Location = New-Object System.Drawing.Size(450,40) 
$objTextBox1.Size = New-Object System.Drawing.Size(140,150)
$objTextBox1.TabIndex = 3 
$objTextBox1.text = $text1
$objTextBox1.Enabled = $false
$objForm.Controls.Add($objTextBox1)

#This creates a checkbox for textbox1
$objDsp2Checkbox = New-Object System.Windows.Forms.Checkbox 
$objDsp2Checkbox.Location = New-Object System.Drawing.Size(430,40) 
$objDsp2Checkbox.Size = New-Object System.Drawing.Size(150,20)
$objDsp2Checkbox.TabIndex = 0
$objForm.Controls.Add($objDsp2Checkbox)

#Enables the textbox when user check the box:
#textbox1
$objDsp2Checkbox_OnClick = {
if ($objDsp2Checkbox.Checked -eq $true)
{
    $objTextBox1.Enabled = $true  
}
elseif ($objDsp2Checkbox.Checked -eq $false)
{
    $objTextBox1.Enabled = $false
}   
}
$objDsp2Checkbox.Add_Click($objDsp2Checkbox_OnClick)

#variables
$text1=$objTextBox1.Text

#This creates the ok and cancle buttons:
#ok Button 
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(220,155)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click(
{
 if (($objDspCheckbox.Checked -eq $true) -and ($objDsp2Checkbox.Checked -eq $true))
 {
    New-Item $path -itemtype file -name Dsp.json -value "old" ;((Get-Content "c:\users\$env:USERNAME\documents\Json\dsp.json") -replace 'old', $text1 | out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") ;$objForm.close()
 }

1 个答案:

答案 0 :(得分:1)

尝试将此行(特别是$text1)更改为$objTextBox1.Text

New-Item $path -itemtype file -name Dsp.json -value "old" ;
((Get-Content "c:\users\$env:USERNAME\documents\Json\dsp.json") -replace 'old', $text1 | 
Out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") ;$objForm.close()

要:

New-Item $path -itemtype file -name Dsp.json -value "old" ;
((Get-Content "c:\users\$env:USERNAME\documents\Json\dsp.json") -replace 'old', $objTextBox1.Text | 
Out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") ;$objForm.close()

我不确定是否属于这种情况,但如果您只是需要将文本框文本保存到文件中,则更容易实现:

$objTextBox1.Text | Out-file "c:\users\$env:USERNAME\documents\Json\dsp.json")