Batch file 访问从剪贴板复制的文本并存储在批处理文件中

Batch file 访问从剪贴板复制的文本并存储在批处理文件中,batch-file,Batch File,在我创建的批处理文件中,我试图在两个不同的复制文本之间进行字符串比较。基本上,旧复制的文本与新复制的文本相同。为此,我希望访问剪贴板并将旧复制文本存储在批处理文件中的变量中。然后,复制新文本,将其存储在我的批处理文件中的另一个变量中,然后比较这两个变量,看看它们是否相同。我尝试过寻找解决方案,但我看到的所有文章都描述了如何使用批处理文件将文本复制到剪贴板。然而,我正试图做相反的事情。非常感谢所有帮助。没有本机批处理解决方案可从剪贴板读取,但有一些使用其他语言的简单方法 下面是一个Powershe

在我创建的批处理文件中,我试图在两个不同的复制文本之间进行字符串比较。基本上,旧复制的文本与新复制的文本相同。为此,我希望访问剪贴板并将旧复制文本存储在批处理文件中的变量中。然后,复制新文本,将其存储在我的批处理文件中的另一个变量中,然后比较这两个变量,看看它们是否相同。我尝试过寻找解决方案,但我看到的所有文章都描述了如何使用批处理文件将文本复制到剪贴板。然而,我正试图做相反的事情。非常感谢所有帮助。

没有本机批处理解决方案可从剪贴板读取,但有一些使用其他语言的简单方法

下面是一个Powershell脚本(如果需要,可以从批处理文件轻松调用):


Raymond Chen有一个使用perl的解决方案:

下面是一个简短的批量嵌入解决方案:

1) 创建一个小VB文件,将剪贴板的内容存储在临时文件中

set clipFile=%temp%\clipboard
set vbFile=%temp%\clipboard.vbs
del %vbFile% %clipFile%

rem Create VB file
>"%vbFile%" (
echo.Set objHTML = CreateObject("htmlfile"^)
echo.ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text"^)
echo.path = "%clipFile%"
echo.Set objFSO = CreateObject("Scripting.FileSystemObject"^)
echo.Set objFile = objFSO.OpenTextFile(path, 2, true^)
echo.objFile.WriteLine ClipboardText
echo.objFile.Close )>>"%vbFile%"
2) 执行VB脚本

"%vbFile%"
3) 将文件内容存储在变量中

SETLOCAL ENABLEDELAYEDEXPANSION
    for /f "delims=" %%i in (%clipFile%) do Set line=%%i
    set clipboard=!line!
    echo clipboard="%clipboard%"
ENDLOCAL

在批处理中,您可以使用swiss file knife(SFK),有关使用批处理脚本从剪贴板检索文本的方法,请参阅。如果可用,它将使用PowerShell或.NET。另外,您还可以从批处理文件中运行Perl。