PowerShell如何操作记事本?

PowerShell如何操作记事本?比如:
①往记事本读写内容
②设置打印的页面边距,页眉页码格式。
诚信第一,测试问题解决秒采纳,否则不采纳!

该回答引用ChatGPT
PowerShell可以通过COM对象来操作记事本,具体步骤如下:
1. 创建记事本应用程序对象
powershell
$notepad = New-Object -ComObject "Word.Application"

2. 打开记事本文件
powershell
$document = $notepad.Documents.Open("C:\\path\\to\\file.txt")

3. 读取记事本文件内容
powershell
$content = $document.Content.Text

4. 写入记事本文件内容
powershell
$document.Content.Text = "Hello, world!"

5. 保存记事本文件
powershell
$document.Save()

6. 设置打印页面边距
powershell
$document.PageSetup.LeftMargin = 36
$document.PageSetup.RightMargin = 36
$document.PageSetup.TopMargin = 36
$document.PageSetup.BottomMargin = 36

7. 设置页眉页码格式
powershell
$section = $document.Sections.Item(1)
$header = $section.Headers.Item(1)
$header.PageNumbers.Add(1)
$header.Range.Text = "Page "

完整代码如下:
powershell
$notepad = New-Object -ComObject "Word.Application"
$document = $notepad.Documents.Open("C:\\path\\to\\file.txt")
$content = $document.Content.Text
$document.Content.Text = "Hello, world!"
$document.Save()
$document.PageSetup.LeftMargin = 36
$document.PageSetup.RightMargin = 36
$document.PageSetup.TopMargin = 36
$document.PageSetup.BottomMargin = 36
$section = $document.Sections.Item(1)
$header = $section.Headers.Item(1)
$header.PageNumbers.Add(1)
$header.Range.Text = "Page "
$notepad.Quit()

注意:在操作完成后,需要关闭记事本应用程序对象,否则会一直占用系统资源。
参考文献:https://docs.microsoft.com/en-us/office/vba/api/overview/word/object-model

gpt:
你可以使用PowerShell的内置cmdlet Get-Content和Set-Content来读写文本文件,记事本文件也是一种文本文件。假设你要读写一个名为example.txt的记事本文件,你可以使用以下命令:

读取记事本内容:

Get-Content "C:\path\to\example.txt"

写入记事本内容:


Set-Content "C:\path\to\example.txt" "Hello World!"

如果你想要添加文本到记事本文件中而不是覆盖现有的内容,你可以使用Add-Content命令。

关于打印页面边距和页眉页码格式,你需要使用.NET Framework的System.Drawing.Printing类。下面是一个示例脚本,它设置了打印页面的边距,并定义了一个自定义的页眉和页脚格式。


# 导入System.Drawing.Printing类
Add-Type -AssemblyName System.Drawing

# 创建一个PrintDocument对象
$printer = New-Object System.Drawing.Printing.PrintDocument

# 设置页面边距
$margin = New-Object System.Drawing.Printing.Margins(50,50,50,50)
$printer.DefaultPageSettings.Margins = $margin

# 定义页眉页脚格式
$headerFont = New-Object System.Drawing.Font("Arial", 10)
$footerFont = New-Object System.Drawing.Font("Arial", 8)
$printer.DocumentName = "My Document"
$printer.PrinterSettings.PrintToFile = $false
$printer.PrinterSettings.PrinterName = "My Printer"
$printer.DocumentName = "My Document"
$printer.Document.PrinterSettings.Copies = 1
$printer.Document.DefaultPageSettings.Margins = $margin
$printer.Document.DefaultPageSettings.Landscape = $false

$printer.Document.AddPageEventHandler({ 
  param($sender, $e)

  $g = $e.Graphics
  $headerText = "My Custom Header"
  $footerText = "Page " + ($e.PageSettings.PrinterSettings.FromPage + $e.PageSettings.PrinterSettings.ToPage - $e.PageSettings.PrinterSettings.PrintRange.Start) + " of " + $e.PageSettings.PrinterSettings.MaximumPage

  # 绘制页眉
  $headerRect = New-Object System.Drawing.RectangleF($e.MarginBounds.Left, $e.MarginBounds.Top - 40, $e.MarginBounds.Width, 40)
  $g.DrawString($headerText, $headerFont, [System.Drawing.Brushes]::Black, $headerRect)

  # 绘制页脚
  $footerRect = New-Object System.Drawing.RectangleF($e.MarginBounds.Left, $e.MarginBounds.Bottom, $e.MarginBounds.Width, 20)
  $g.DrawString($footerText, $footerFont, [System.Drawing.Brushes]::Black, $footerRect)
})

# 打印文档
$printer.Print()

请注意,此脚本只是一个示例,你需要根据自己的需求进行修改和调整。如果你需要更多关于System.Drawing.Printing类的信息

我引用ChatGPT作答:
① 往记事本读写内容:

PowerShell中可以通过以下命令往记事本写入内容:

Set-Content -Path "C:\path\to\file.txt" -Value "Content to write to file"

如果要追加内容而不是覆盖原有内容,则可以使用Add-Content命令:

Add-Content -Path "C:\path\to\file.txt" -Value "Content to append to file"

读取文件内容可以使用Get-Content命令:

Get-Content -Path "C:\path\to\file.txt"

如果需要读取的文件比较大,可以使用-ReadCount参数来指定每次读取的行数,以提高效率。例如:

Get-Content -Path "C:\path\to\largefile.txt" -ReadCount 1000

以上命令将每次读取1000行内容。
② 设置打印的页面边距,页眉页码格式:

PowerShell中可以通过以下命令来设置打印页面的边距、页眉和页码格式:

$printer = (New-Object -COMObject "Excel.Application").ActivePrinter
(New-Object -COMObject "Excel.Application").ActivePrinter = "$printer on Ne01:"
(New-Object -COMObject "Excel.Application").ActiveWorkbook.PageSetup.TopMargin = 0.75
(New-Object -COMObject "Excel.Application").ActiveWorkbook.PageSetup.BottomMargin = 0.75
(New-Object -COMObject "Excel.Application").ActiveWorkbook.PageSetup.LeftMargin = 0.7
(New-Object -COMObject "Excel.Application").ActiveWorkbook.PageSetup.RightMargin = 0.7
(New-Object -COMObject "Excel.Application").ActiveWorkbook.PageSetup.CenterFooter = "Page &P of &N"
(New-Object -COMObject "Excel.Application").ActiveWorkbook.PrintOut()

以上命令使用Excel COM对象来设置打印页面的边距、页眉和页码格式,然后使用PrintOut()方法将文件打印出来。请注意,上述命令中的打印机名称和纸张名称可能需要根据实际情况进行更改。

该回答参考ChatGPT:
①往记事本读写内容:

可以使用以下命令操作记事本:

读取文本文件:
Get-Content -Path "文件路径"
写入文本文件:
Set-Content -Path "文件路径" -Value "内容"
追加文本到文件末尾:
Add-Content -Path "文件路径" -Value "内容"
例如,要往文件C:\test.txt写入内容Hello World!,可以使用以下命令:

Set-Content -Path "C:\test.txt" -Value "Hello World!"
②设置打印的页面边距,页眉页码格式:

可以使用.NET Framework提供的System.Drawing.Printing.PrintDocument类来设置打印页面的属性。

以下是一个示例脚本,它使用PrintDocument类创建一个文本文件打印并设置页面边距、页眉和页码格式:

# 创建一个PrintDocument对象
$printDoc = New-Object System.Drawing.Printing.PrintDocument

# 设置页面边距
$margin = New-Object System.Drawing.Printing.Margins(50,50,50,50)
$printDoc.DefaultPageSettings.Margins = $margin

# 设置页眉和页码格式
$headerFont = New-Object System.Drawing.Font("Arial", 10)
$printDoc.DocumentName = "Test Document"
$printDoc.DefaultPageSettings.Landscape = $true
$printDoc.DefaultPageSettings.PrinterSettings.PrintRange = [System.Drawing.Printing.PrintRange]::AllPages
$printDoc.DefaultPageSettings.PrinterSettings.PrintToFile = $false
$printDoc.DefaultPageSettings.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"
$printDoc.OriginAtMargins = $true
$printDoc.PrinterSettings.PrintToFile = $false
$printDoc.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"

# 打印文本
$content = "Hello World!"
$printDoc_PrintPage = {
    param($sender, $e)
    $e.Graphics.DrawString($content, $headerFont, [System.Drawing.Brushes]::Black, 100, 100)
}
Register-ObjectEvent -InputObject $printDoc -EventName PrintPage -Action $printDoc_PrintPage | Out-Null
$printDoc.Print()

此脚本将创建一个打印文档对象,并设置页面边距为50,页眉和页码格式为文档名称、横向打印、打印所有页面、不打印到文件、使用Microsoft XPS Document Writer打印机。然后,它将打印文本“Hello World!”,并在打印前注册了一个PrintPage事件来处理打印页面。最后,它使用Print()方法打印文档。

请注意,此示例脚本假定计算机上已安装Microsoft XPS Document Writer打印机。如果要使用其他打印机,请更改PrintDocument对象

以下是 PowerShell 操作记事本的方法:

使用 Start-Process 命令打开记事本,使用 SendKeys 方法向记事本发送按键。例如,以下代码可以向一个新的记事本文件写入 "Hello World":

Start-Process notepad.exe -Wait
Sleep 1
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
[System.Windows.Forms.SendKeys]::SendWait('Hello World')


使用 Get-Content 命令读取记事本文件的内容并输出到控制台。例如,以下代码可以读取一个记事本文件的内容:


Get-Content -Path 'C:\path\to\file.txt'

设置打印的页面边距和页眉页码格式需要创建一个自定义的记事本打印模板文件(.npt),并使用 Start-Process 命令打开该文件进行打印。以下是创建自定义记事本打印模板文件的示例代码:

$template = @"
[.ShellClassInfo]
PrintTo = 1
[{000214A0-0000-0000-C000-000000000046}]
Prop3 = 19,2
[PrintSettings]
HeaderFooterFont=Arial,10,0,0,0,0,0
HeaderLeft=&f
HeaderCenter=&t
HeaderRight=&p/&P
FooterLeft=&u
FooterCenter=&d
FooterRight=&b
MarginTop=0.5
MarginLeft=0.5
MarginRight=0.5
MarginBottom=0.5
"@

$template | Out-File -Encoding ASCII -FilePath 'C:\path\to\template.npt'


然后,使用 Start-Process 命令打开该模板文件进行打印:


Start-Process notepad.exe -ArgumentList 'C:\path\to\template.npt'
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1063323
  • 这篇博客你也可以参考下:PowerShell 中关于禁止运行脚本的报错问题解决
  • 除此之外, 这篇博客: 【内网学习笔记】2、PowerShell中的 运行脚本 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • PowerShell 运行脚本的方式和其他 shell 基本一致,可以输入完整路径运行,也可以到 ps1 文件所在目录下去运行,具体如下:

    PS C:\Users\teamssix> C:\t.ps1
    hello TeamsSix
    
    PS C:\Users\teamssix> cd C:\
    
    PS C:\> .\t.ps1
    hello TeamsSix
    

    这里不禁想吐槽一下,在看百度百科的时候关于 PowerShell 运行脚本的描述是这样的:“假设你要运行一个名为a.ps1的脚本,你可以键入 C:\Scripts\aps1,最大的例外是,如果 PowerShell 脚本文件刚好位于你的系统目录中,那么你可以直接在命令提示符命令提示符后键入脚本文件名即可运行”

    这里的“系统目录”是指的啥目录?C:\还是C:\windows\system目录,“最大的例外”又是什么鬼,讲道理读起来有一种机翻的感觉。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:

  1. 往记事本读写内容

在PowerShell中可以通过Get-Content命令获取记事本中的内容,通过Set-Content命令往记事本中写入内容。

示例代码:

# 获取记事本中的内容
Get-Content -Path "C:\Users\UserName\Desktop\test.txt"已黑化的小白 
# 往记事本中写入内容
Set-Content -Path "C:\Users\UserName\Desktop\test.txt" -Value "Hello World!"已黑化的小白 ```

2. 设置打印的页面边距,页眉页码格式

我们可以通过VBScript来实现设置记事本打印页面边距,页眉页码等格式的操作。具体步骤如下:

1. 创建一个.vbs文件,将以下代码复制到文件中:

```vbscript
Set objWord = CreateObject("Word.Application")

Set objDoc = objWord.Documents.Open("C:\Users\UserName\Desktop\test.txt")

With objDoc.PageSetup
    .TopMargin = CentimetersToPoints(2.54) ' 设置顶部边距为2.54厘米
    .BottomMargin = CentimetersToPoints(2.54) ' 设置底部边距为2.54厘米
    .LeftMargin = CentimetersToPoints(2.54) ' 设置左边距为2.54厘米
    .RightMargin = CentimetersToPoints(2.54) ' 设置右边距为2.54厘米
    .HeaderDistance = CentimetersToPoints(1) ' 设置页眉距离为1厘米
    .FooterDistance = CentimetersToPoints(1) ' 设置页脚距离为1厘米
    .DifferentFirstPageHeaderFooter = True ' 设置首页页眉页脚不同
    With .PageNumbers
        .RestartNumberingAtSection = True ' 设置每个章节重新编号
        .StartingNumber = 1 ' 设置起始页码为1
    End With
End With

objDoc.Close
objWord.Quit
  1. 将上面代码中的C:\Users\UserName\Desktop\test.txt路径改为你自己电脑中的记事本文件路径。

  2. 在PowerShell中使用&运算符执行.vbs文件。

示例代码:

powershell & "C:\Users\UserName\Desktop\setpage.vbs"已黑化的小白

执行后即可设置记事本打印页面边距,页眉页码格式。
如果我的回答解决了您的问题,请采纳!

  • PowerShell操作记事本、记事本读写内容、设置打印页面边距、页眉页码格式

1.PowerShell 操作记事本 可以使用 PowerShell 的 Get-Content 和 Set-Content 命令来读写记事本文件内容。例如:

# 读取记事本文件
Get-Content C:\example.txt

# 在记事本文件中加入新内容
Add-Content C:\example.txt "Hello world!"

# 覆盖记事本文件原有内容
Set-Content C:\example.txt "New content"

2.PowerShell 设置记事本页面边距、页眉页码格式 由于记事本并没有内置设置页面边距、页眉页码的功能,因此需要通过其他程序来实现这个功能。Microsoft Office Word 是一个常用的工具,可以通过 PowerShell 来自动化操作 Word 来完成上述需求。 首先需要创建一个 Word 应用程序对象,然后设置页面边距,插入页眉和页码,并将需要编辑的文本导入 Word 文档,最后保存并关闭文档。示例代码如下:


# 创建 Word 应用程序对象
$word = New-Object -ComObject Word.Application

# 打开 Word,新建一个文档
$doc = $word.Documents.Add()

# 设置页面边距
$doc.PageSetup.LeftMargin = 36
$doc.PageSetup.RightMargin = 36
$doc.PageSetup.TopMargin = 72
$doc.PageSetup.BottomMargin = 72

# 插入页眉和页码
$section = $doc.Sections.Item(1)
$header = $section.Headers.Item(1)
$header.Range.Text = "Header text"
$header.Range.ParagraphFormat.Alignment = 1 # 居中对齐
$footer = $section.Footers.Item(1)
$pageNumber = $footer.PageNumbers.Add()
$pageNumber.NumberStyle = [Microsoft.Office.Interop.Word.WdPageNumberStyle]::wdPageNumberStyleArabic

# 将文本导入 Word 文档
$content = Get-Content C:\example.txt
$selection = $word.Selection
$selection.TypeText($content)

# 保存并关闭 Word 文档和应用程序对象
$doc.SaveAs("C:\example.docx")
$doc.Close()
$word.Quit()

注意,如果没有安装 Microsoft Office Word,这个功能是无法实现的。同时,在运行以上代码之前,需要将 PowerShell 的默认执行策略改为 RemoteSigned 或 Unrestricted,以便于运行自定义脚本。具体如何修改执行策略可以参考[1]。

PowerShell 快速入门
写的非常详细,可以借鉴下
https://blog.csdn.net/K346K346/article/details/128793878

往记事本读写内容
powershell

打开记事本

notepad

写入内容

$stream = [System.IO.File]::OpenWrite("C:\temp\test.txt")
$writer = New-Object System.IO.StreamWriter($stream)
$writer.Write("Hello, world!")
$writer.Close()
$stream.Close()

读取内容

$stream = [System.IO.File]::OpenRead("C:\temp\test.txt")
$reader = New-Object System.IO.StreamReader($stream)
$reader.ReadToEnd()
$reader.Close()
$stream.Close()
设置打印的页面边距,页眉页码格式
powershell

打开记事本

notepad

获取记事本的打印机设置

$printersettings = New-Object System.Drawing.Printing.PrinterSettings
$printersettings.PrinterName = "Microsoft Print to PDF" # 修改为你的打印机名称
$printersettings.GetHdevmode()

修改页面边距

$devmode = $printersettings.GetHdevmode()
$devmode.MarginLeft = 100 # 设置左边距为100像素
$devmode.MarginRight = 100 # 设置右边距为100像素
$devmode.MarginTop = 100 # 设置上边距为100像素
$devmode.MarginBottom = 100 # 设置下边距为100像素
$printersettings.SetHdevmode($devmode)

修改页眉页码格式

$header = New-Object System.Drawing.Printing.PageSettings
$header.Margins.Top = 50 # 设置页眉距离页面顶部为50像素
$header.Margins.Bottom = 50 # 设置页眉距离页面底部为50像素
$header.Margins.Left = 100 # 设置页眉距离页面左边为100像素
$header.Margins.Right = 100 # 设置页眉距离页面右边为100像素
$header.Landscape = $false # 设置为纵向打印
$header.CenterHeader = "Header Text" # 设置页眉文本
$header.CenterFooter = "Page: [Page]" # 设置页脚文本
$printersettings.DefaultPageSettings = $header
以上示例中,"C:\temp\test.txt"和"Microsoft Print to PDF"需要根据实际情况进行修改。

读取记事本文件

Get-Content C:\example.txt

在记事本文件中加入新内容

Add-Content C:\example.txt "Hello world!"

覆盖记事本文件原有内容

Set-Content C:\example.txt "New content"

创建 Word 应用程序对象

$word = New-Object -ComObject Word.Application

打开 Word,新建一个文档

$doc = $word.Documents.Add()

设置页面边距

$doc.PageSetup.LeftMargin = 36
$doc.PageSetup.RightMargin = 36
$doc.PageSetup.TopMargin = 72
$doc.PageSetup.BottomMargin = 72

插入页眉和页码

$section = $doc.Sections.Item(1)
$header = $section.Headers.Item(1)
$header.Range.Text = "Header text"
$header.Range.ParagraphFormat.Alignment = 1 # 居中对齐
$footer = $section.Footers.Item(1)
$pageNumber = $footer.PageNumbers.Add()
$pageNumber.NumberStyle = [Microsoft.Office.Interop.Word.WdPageNumberStyle]::wdPageNumberStyleArabic

将文本导入 Word 文档

$content = Get-Content C:\example.txt
$selection = $word.Selection
$selection.TypeText($content)

保存并关闭 Word 文档和应用程序对象

$doc.SaveAs("C:\example.docx")
$doc.Close()
$word.Quit()