在Word中,我可以按CTRL+F进入导航,然后按其中的“标题”选项卡来查看章节标题,这非常有用。然而,我注意到并不是每个标题实际上都在这里,然后注意到它与图像中的三角形相关,并且一些不应该是标题的东西位于标题部分。
所以,我希望这个标题出现在某些行上:
- 如何将此标题添加到某些行?以及
- 如何从我不想要的行中删除这个标题(三角形的东西)?
在包含文本的 Word 文档的最后一页上,有一个表格。该表结束于距该页底部约一英寸处。然而,Word 随后决定在此之后插入一个完全空白的页面。我不想要那个空白页。
我已经尝试了几天/几周来摆脱此页面,打开显示格式以查看隐藏字符并查看是否可以删除某些格式元素,查找许多网页以尝试找到解决方案等。如果我删除表格,最后一个空白页消失了,但和以前一样,表格本身在页面末尾之前有大约一英寸的可用空间,那么为什么会导致这个挂页出现在表格后面呢?
重申一下,该空白页或文本上没有表格的任何部分;它只是 Word 自行决定插入的完全不必要且不需要的最终空白页,而且我找不到任何方法来删除。
请注意,如果我按“显示/隐藏格式”,最后一页上会出现一个黑色实心方块和倒置的“P”段落指示符,但我找不到删除它们的方法。
如何删除这个多余的空白页?
我想获取 PDF 并将每个页面提取为图像。我已经能够使用 ImageMagick 和 GhostScript 做到这一点,但结果质量非常差。我尝试了许多不同的输出选项,但没有任何运气。下面的脚本应该是相当不言自明的。它可以工作,但与打开 PDF 相比,图像质量确实令人失望。
# Extract each page from a PDF as a png using ImageMagick
# ImageMagick requires GhostScript for PDF manipulation so have to make sure that is installed
# Current install folder: C:\Program Files\ImageMagick-7.1.1-Q16-HDRI
# Chocolatey package does not inclued the 'identify.exe' command
# Path to the PDF file
$pdfFilePath = "C:\0\MyFile.pdf"
# Output directory for images
$outputDirectory = "C:\0"
# Image type to output to (tried jpg, png, tiff etc)
$imageExtension = "jpg"
# Check if running as Admin
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Host "Please run this script as an administrator."; exit }
# Check if Chocolatey is installed, if not, install it
if (!(Test-Path "$env:ProgramData\chocolatey")) { Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) }
# Check for magick.exe on path; if not installed, install ImageMagick
$imageMagickExePath = Get-ChildItem -Path "C:\Program Files\ImageMagick-*" -Filter "magick.exe" -Recurse | Select-Object -First 1 -ExpandProperty FullName
if (!(Get-Command "magick.exe" -ea silent) -and ($null -eq $imageMagickExePath)) { Write-Host "ImageMagick not found. Installing..."; choco install imagemagick -y }
if ($null -eq $imageMagickExePath) { Write-Host "Error: magick.exe not found at $imageMagickExePath"; exit }
Write-Host "magick.exe found at '$imageMagickExePath'"
# Check for gswin64.exe on path; if not installed, install GhostScript
$gsExePath = Get-ChildItem -Path "C:\Program Files\gs\gs*\bin" -Filter "gswin64.exe" -Recurse | Select-Object -First 1 -ExpandProperty FullName
if (!(Get-Command "gswin64.exe" -ea silent) -and ($null -eq $gsExePath)) { Write-Host "GhostScript not found. Installing..."; choco install ghostscript -y }
if ($null -eq $gsExePath) { Write-Host "Error: gswin64.exe not found, this is required by ImageMagick for PDF manipulation"; exit }
Write-Host "gswin64.exe found at '$gsExePath'"
# Add Ghostscript directory to the PATH temporarily so that ImageMagick can use it
$env:Path += ";$($gsExePath | Split-Path -Parent)"
# Create the output directory if it doesn't exist
if (-not (Test-Path $outputDirectory)) { New-Item -ItemType Directory -Force -Path $outputDirectory | Out-Null }
# Convert each page of the PDF to PNG
$imageNamePrefix = [System.IO.Path]::GetFileNameWithoutExtension($pdfFilePath)
$imageNamePrefix = $imageNamePrefix -replace '\s+', '_'
# Use ImageMagick's identify command to get the total number of pages in the PDF
$numberOfPages = (identify "$pdfFilePath" 2>$null | Measure-Object -Line).Lines
Write-Host "'$pdfFilePath' has $numberOfPages pages"
# Use ImageMagick's convert command to convert PDF
Start-Process $imageMagickExePath -ArgumentList "convert `"$pdfFilePath`" -density 600 -quality 100 -antialias -resize 300% `"$outputDirectory\$imageNamePrefix-%d.$imageExtension`"" -NoNewWindow -Wait
# Determine the maximum number of digits to normalise all page numbers to that length
$maxDigits = $numberOfPages.ToString().Length
# Normalize page numbers
for ($i = 0; $i -le $numberOfPages; $i++) {
$pageNumber = "{0:D$maxDigits}" -f $i
$oldFileName = Join-Path $outputDirectory "$imageNamePrefix-$i.$imageExtension"
$newFileName = Join-Path $outputDirectory "$imageNamePrefix-$pageNumber.$imageExtension"
if ((Test-Path $oldFileName) -and !(Test-Path $newFileName)) { Rename-Item -Path $oldFileName -NewName $newFileName }
}
# Remove the Ghostscript directory from the PATH
$env:Path = $env:Path -replace [regex]::Escape(";"+($gsExePath | Split-Path -Parent))
# command-line tools for manipulating PDFs:
# https://libgen.rs/search.php?req=pdf+hacks&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=defs
# pdftk (PDF Toolkit): pdftk is a command-line tool for manipulating PDF files. It can merge, split, rotate, watermark, and decrypt PDF files.
# QPDF: QPDF is another command-line tool for structural, content-preserving transformation of PDF files. It's particularly useful for linearizing PDFs, decrypting, and compressing them.
# Poppler Utilities (pdftohtml, pdftotext, pdfimages): Poppler is a PDF rendering library and its utilities provide command-line tools for converting PDFs to various formats such as HTML, text, and images. pdftohtml converts PDF to HTML, pdftotext converts PDF to plain text, and pdfimages extracts images from PDFs.
# Ghostscript: Ghostscript is a suite of software based on an interpreter for Adobe Systems' PostScript and Portable Document Format (PDF) page description languages. It can be used for a wide variety of tasks including converting PDFs to various formats, merging PDFs, and more.
# MuPDF: MuPDF is a lightweight PDF, XPS, and E-book viewer. It also includes command-line tools for extracting text and images from PDFs.
# PDFMiner: PDFMiner is a tool for extracting information from PDF documents. It includes a command-line tool for extracting text, images, and other content from PDFs.
当我运行这个时:
Set-VMNetworkAdapter -VMName $vmName -Name "Network Adapter" -VMQ
我明白了:
Set-VMNetworkAdapter : Missing an argument for parameter 'VmqWeight'. Specify a parameter of type 'System.Nullable`1[System.UInt32]' and
try again.
At line:1 char:62
+ Set-VMNetworkAdapter -VMName $vmName -Name "Network Adapter" -VMQ
+ ~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-VMNetworkAdapter], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,Microsoft.HyperV.PowerShell.Commands.SetVMNetworkAdapter
所以我尝试添加VmqWeight
:
Set-VMNetworkAdapter -VMName $vmName -Name "Network Adapter" -VMQ -VmqWeight 30
我得到这个:
Set-VMNetworkAdapter : Missing an argument for parameter 'VmqWeight'. Specify a parameter of type 'System.Nullable`1[System.UInt32]' and
try again.
At line:1 char:62
+ ... VMNetworkAdapter -VMName $vmName -Name "Network Adapter" -VMQ -VmqWei ...
+ ~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-VMNetworkAdapter], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,Microsoft.HyperV.PowerShell.Commands.SetVMNetworkAdapter
我查了一下-VmqWeight
,它的值应该在 -100 到 100 之间。
在我的虚拟机上设置这些选项的正确语法是什么?
我想将 .docx 与 OpenOffice 关联
$extension = ".docx"
$executable = "$MyPrograms\LibreOffice\program\swriter.exe"
$fileType = "docxfile"
if (Test-Path $executable) {
$elevated = @"
cmd /c "assoc $extension=$fileType"
cmd /c 'ftype $fileType="$executable" "%1" "%*"'
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
Set-ItemProperty -Path "HKCR:\$fileType" -Name "(Default)" -Value "$fileType file" -ErrorAction Stop
"@
Start-Process powershell -WindowStyle Hidden -Verb runAs -ArgumentList "-Command", $elevated
Write-Host "`'$extension`' has been associated with `'$executable`'."
} else {
Write-Host "`'$executable`' does not exist, so no association for `'$extension`' has been created."
这有一些问题:
swriter.exe
完整的文件名,我该怎么做?swriter.exe
并且它不会打开应用程序,因此不知何故仅将文件传递到swriter.exe
不足以获取要打开的程序。我该如何解决这个问题?使用这个问题的答案Copy Java installation to another system我可以手动安装 Java(无需运行安装程序)并将其移植到其他系统。这很好用。
但是,我仍然无法让 java .jar 文件与java.exe
or正确关联javaw.exe
。我正在使用以下内容创建关联(我通过拍摄注册表快照来创建关联,以查看在关联期间更改了哪些键 - 当我双击 a.jar
并将其指向时java.exe
,但这无法创建关联。我有以前经常做这样的事情来关联事物,但在这里它完全失败了,所以如果有人能告诉我如何.jar
正确关联应用程序,以便在我双击 tha 时它们会打开,我将不胜感激.jar
(请注意,我尝试了以下操作associate withjava.exe
和 with javaw.exe
。不幸的是,两者都失败了。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\.jar]
@="jar_auto_file"
[HKEY_CURRENT_USER\Software\Classes\Applications\java.exe]
[HKEY_CURRENT_USER\Software\Classes\Applications\java.exe\shell]
[HKEY_CURRENT_USER\Software\Classes\Applications\java.exe\shell\open]
[HKEY_CURRENT_USER\Software\Classes\Applications\java.exe\shell\open\command]
@="\"C:\\Users\\WDAGUtilityAccount\\Desktop\\MySandbox\\MyPrograms\\java\\bin\\java.exe\" \"%1\""
[HKEY_CURRENT_USER\Software\Classes\jar_auto_file]
[HKEY_CURRENT_USER\Software\Classes\jar_auto_file\shell]
[HKEY_CURRENT_USER\Software\Classes\jar_auto_file\shell\open]
[HKEY_CURRENT_USER\Software\Classes\jar_auto_file\shell\open\command]
@="\"C:\\Users\\WDAGUtilityAccount\\Desktop\\MySandbox\\MyPrograms\\java\\bin\\java.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\OpenWithList]
"MRUList"="ba"
"b"="java.exe"
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\OpenWithProgids]
"jar_auto_file"=hex(0):
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\UserChoice]
"ProgId"="Applications\\java.exe"
"Hash"="jHq42dyBKxc="
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer]
"GlobalAssocChangedCounter"=dword:00000003
我想在 Windows 上创建一个分离/离线 Java 设置以推广到其他系统和 VM。我知道有些应用程序在其中捆绑了 Java,但我想知道我是否也可以创建一个可以移植到另一个系统的 Java 安装。即我不想从 Oracle 安装程序、chocolatey 或其他包管理器安装 Java。我想从一个系统获取普通 Java 安装文件夹,然后移植到另一个系统或 VM,最好是从默认文件夹 ( C:\MyApps\Java
) 移植到另一个文件夹。
主要明显的考虑因素是 PATH 和注册表。当然,我会将包含java.exe
etc 的文件夹添加到 PATH。这样就够了吗?然后文件会.jar
使用这些二进制文件,还是我还需要添加注册表信息和 PATH?
我们如何以这种方式创建一个完全可移植的 Java 版本?
自 Windows 3.1 以来,我可能已经安装了数千次 Windows。我忘记了Win 3.1的情况,但是从Windows 95开始,Windows从来没有尊重过分区大小的现实,今天又发生了,我想也许这里有人可以启发我......
例如,当我有一个新擦除的硬盘时,Windows 会询问我希望新系统分区的大小(以 MB 为单位),因此,在这种情况下我想要 64 GB,我输入 65536 ... 正好是 64 GB,正确的?错误的!...一旦您这样做,Windows 就会报告新的分区大小为 63.9 GB。
微软是否一直在对我们开了 20 多年的恶作剧?...或者,Microsoft 将 Windows 中的 65536 MB 报告为 63.9 GB 而不是 64 GB 是否有充分的理由?
这不是要知道的最重要的问题,但我很想知道是否有人有一个好的答案,因为它让我很长时间摸不着头脑(如果这可以通过 NTFS 表占用一些空间或什么,你会说什么是让 Windows 设置 64 GB 驱动器的正确方法)??
在 Windows 沙盒中,如果我按Ctrl+ Alt+ Del,它不会作用于沙盒,即使我处于全屏模式(这是在 Windows 10 上)。事实上,没有系统组合键在沙盒上运行并且总是返回到主机系统,所以如果我只是按下WinKey它将打开主机开始菜单而不是 Windows 沙盒的菜单(同样,即使沙盒完全最大化-当时的屏幕)。
在远程桌面会话中,我们当然可以按Ctrl+ Alt+End来模仿Ctrl+ Alt+ Del,如果远程桌面会话是全屏的,那么按下WinKey将在远程系统上操作,并且 Windows Sandbox 确实在使用远程桌面框架时出现它处于全屏模式。
我们如何将系统按键(如Ctrl++ Alt)Del或WinKey传递给沙盒系统而不是主机系统?
我想在 SendTo 中有一个指向 PowerShell 脚本的快捷方式,这样文件资源管理器中的所有选定项目都作为参数传递给 PowerShell 脚本。这对我能够在 PowerShell 中定义自定义任务非常有用。
Zip to backup folder.lnk
例如,如果我在 SendTo 中有快捷方式。我在文件资源管理器中选择多个项目(文件和文件夹),然后右键单击 > SendTo > 'Zip to backup folder',然后我选择的所有文件和文件夹都作为参数传递给 PowerShell 脚本(因为.fullname
路径可能是最简单的) 从中我可以对所选项目执行多个 PowerShell 操作。
如何设置shell:SendTo
可以将选定的文件资源管理器项目传递给 PowerShell 脚本的快捷方式?
我在这里和这里看到了一些东西,但一个是 Cmd 的组合(纯 PowerShell 方法在 2022 年可能更合适),另一个是关于完整的上下文菜单项。
我刚刚注意到,在我的主系统上,PowerShell 控制台无法调整大小,因为当您按下最大化时,宽度不会改变,并且您无法从底角拖动到右侧等,并且您无法按住 CTRL + 滚动鼠标-轮来调整大小,即这个控制台框就像 DOS。但是,当我在另一个系统上(使用完全相同的 Windows 10 版本)时,PowerShell 控制台的大小是完全可调整的(上述所有限制都消失了)。有谁知道为什么存在这两个完全不同的控制台,都称为 PowerShell,以及我如何才能访问好的(即更现代/可调整大小的)控制台(并摆脱类似 DOS 的控制台)?
我希望能够让商店应用程序在 Windows 沙盒中工作。我在这里问了一个关于 Windows 沙盒和商店应用程序的问题,@harrymc 向我指出了一种在 Windows 沙盒中安装这些应用程序的方法(微软商店在 Windows 沙盒中被禁用)。
我使用此处和此处的功能为每个应用程序下载.appx
和文件。.appxbundle
我已经能够让计算器工作,但其他各种没有。特别是,我想让 Microsoft 终端在 Windows 沙盒中工作,并且商店应用程序对于在 GUI 中安装其他应用程序可能很有用。
Download-AppxPackage https://www.microsoft.com/store/productId/9WZDNCRFHVN5 # Calculator
Download-AppxPackage https://www.microsoft.com/store/productId/9N0DX20HK701 # Microsoft Terminal
Download-AppxPackage https://www.microsoft.com/store/productId/9WZDNCRFJBMP # Microsoft Store
完成此操作后,您可以Add-AppxPackage
在 Windows Sandbox 中针对下载的每个文件使用以将它们添加到 Sandbox 中,然后该应用程序现在应该在“开始”菜单中可用。
但是,我完全无法让 Microsoft Terminal(不下载或安装)或 Microsoft Store(安装但不会启动)在 Windows Sandbox 实例中工作(终端是我想了解这是否可行的主要原因,所以这令人失望)。
任何人都可以使用上述或其他技术让 Microsoft 终端的商店应用程序在 Windows 沙盒中运行,如果可以,如何?
Windows 沙盒对我来说非常有用;拥有一个我用来尝试的即时容器很棒,这是一个了不起的功能,但我无法理解为什么商店应用程序在这里不起作用。我想知道这里是否有人有原因:
Windows Sandbox 从来没有太多的文档。看起来,一些稀疏的文档被放在了微软的网站上,然后我就再也没有听到过更多的信息。很高兴知道上述(或相关信息)的答案,谢谢。
我真的需要用 PowerShell 禁用 Xbox Game Bar。有很多关于如何删除/卸载 Xbox Game Bar 的文章,但这对我不起作用,因为我需要在 Windows Sandbox 中使用它(卸载它是不可能的)。
这样做的原因是,You'll need a new app to open this ms-gamingoverlay link
每当打开某些应用程序时,游戏栏都会不断抛出错误,并且由于每次打开 Windows 沙盒都是原始的,我会一遍又一遍地收到这个错误,直到我可以以某种方式禁用它。
因此,我非常感谢一种通过 PowerShell 禁用此功能的方法,以便我可以将其放入我的启动脚本中。
我非常想使用 PowerShell 将“回收站”添加到文件资源管理器的“快速访问”区域(因为这是我喜欢在所有新系统上拥有的标准东西)。添加到“快速访问”很简单:
$oShell = New-Object -ComObject Shell.Application
$oShell.Namespace("C:\ProgramData\chocolatey\lib").Self.InvokeVerb("PinToHome")
问题是“回收站”当然不是一个普通的文件夹。但是,可以按如下方式访问它:
$oShell = New-Object -ComObject Shell.Application
$rb = $oShell.Namespace(10)
但是添加到“快速访问”$rb.Self.InvokeVerb("PinToHome")
不起作用。
请有人告诉我如何以编程方式将“回收站”添加到“快速访问”中。我知道这是可以做到的,因为将项目从桌面拖到文件资源管理器上是可行的,所以必须有一些可编程的方式来实现这一点吗?
我正在努力从命令行(例如 PowerShell 或 CMD)启动 WSL“Ubuntu 20.04”商店应用程序(或任何商店应用程序,真的)。
当我从开始菜单运行 Ubuntu 20.04 时,它会在一个带有 Ubuntu 图标和正确窗口标题(“Ubuntu 20.04 LTS”)的窗口中启动。从命令行启动时,我想获得相同的应用程序窗口。
我进行了相当多的搜索,并找到了引用(例如)的这个页面,但我无法使其适用于 Ubuntu Store 应用程序。这对我来说似乎有点令人费解——有没有更简单的方法?如果没有,这对 Ubuntu 有什么作用?start shell:AppsFolder\{folder}!App
start shell:AppsFolder\Microsoft.WindowsStore_8wekyb3d8bbwe!App
我熟悉该wsl
命令,但如果我wsl -d Ubuntu-20.04
从“开始”菜单运行,生成的窗口将具有通用的 WSL/Linux/Penguin 图标,而不是 Ubuntu 图标。窗口标题也不C:\Windows\system32\wsl.exe
是“Ubuntu 20.04 LTS”。
如果我wsl
从 CMD 运行相同的命令,它仍然有 CMD 图标。
也许我可以使用 DOS/CMDTITLE
命令,但我只想有一个可以用来启动 Store 应用程序的命令。这可能吗?
相比之下,“普通” .exe
Windows 应用程序可以很容易地从 CMD 或 PowerShell 启动。
我对 Ubuntu WSL 的解决方案非常满意,但如果有简单(尤其是可编程)的方式来运行所有Windows 应用商店应用程序,那就太好了。