我试着搜索,但找不到任何我需要的东西。
所以我想获取,也许在Windows中使用curl,这个网站生成的guid字符串,而不需要先保存html文件。来源或多或少像这样:
<input name="YourGuidLabel" type="text" id="YourGuidLabel" onclick="this.focus(); this.select();" readonly="readonly" class="guidinput" value="852dd74c-4249-4390-85d3-6e9e2116ef2b" /></p>
我要的是这个:852dd74c-4249-4390-85d3-6e9e2116ef2b
。然后将字符串存储到一个变量中,并回显以查看它。
在linux终端中,我可以这样做:
curl -s "https://www.guidgen.com/" | grep -o 'me="YourGuid.*value=.*/>' | cut -d '"' -f14
是否可以使用批处理文件?
这可以在Windows上使用PowerShell命令处理批处理文件,并将其设置为for /f .. do
循环变量:
@echo off
Title Extract GUID Value from Input Field from site https://www.guidgen.com
@For /f %%a in ('Powershell -C "$(IWR https://www.guidgen.com -UseBasicParsing).InputFields.value"') do Set "GUID=%%a"
Echo GUID=%GUID%
pause
@ECHO OFF
SETLOCAL
rem The following settings for the source directory and filename are names
rem that I use for testing and deliberately include names which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:your files"
SET "filename1=%sourcedir%q74909468.txt"
FOR /f "usebackqdelims=" %%e IN ("%filename1%") DO SET "html=%%e"
SET "html=%html:"=%"
SET "html=%html:<=%"
SET "html=%html:>=%"
SET "html=%html:)=%"
SET "html=%html:(=%"
SET "html=%html:;=%"
FOR %%e IN (%html%) DO if "%%e" neq "//p" SET "guid=%%e"
ECHO GUID=%guid%
GOTO :EOF
在应用于实际数据之前,始终针对测试目录进行验证。
注意,如果文件名不包含分隔符,如空格,那么usebackq
和%filename1%
周围的引号都可以省略。
你没有告诉我们html的位置-我认为是一个文件。
遗憾的是"或多或少喜欢"不足以生成可靠的解决方案。
将文件行读入变量html
从该变量中删除所有" < > ) ( ;
。
处理结果,将每个令牌依次分配给guid
,除非令牌是//p
假设所需的字符串是//p
之前的字符串,它是(原始文本删除字符集)
以下想法不使用PowerShell也可以执行你在问题中列出的任务。
@Echo Off & SetLocal EnableExtensions DisableDelayedExpansion
Set "value=" & For /F Delims^=^ EOL^= %%G In ('%SystemRoot%System32curl.exe -s "https://www.guidgen.com" ^| %SystemRoot%System32findstr.exe /RIC:" value="[0123456789abcdef][0123456789abcdef]*-[0123456789abcdef][0123456789abcdef]*-[0123456789abcdef][0123456789abcdef]*-[0123456789abcdef][0123456789abcdef]*-[0123456789abcdef][0123456789abcdef]*""') Do (Set "value=%%G" & SetLocal EnableDelayedExpansion & For /F Delims^=^"^= %%H In ("!value:* value=!") Do EndLocal & Set "value=%%H")
If Defined value Echo %value% & Pause