批量读取在线url-link(.url)
Read url of online-link(.url) with batch
到目前为止我有这个代码(以 Craft The World 为例):
type "Craft The World.url"|find "URL"
如果我在 cmd 中 运行 它输出:
URL=steam://rungameid/248390
如何将其保存到变量中?我试过 SET A=...
但没用...
我的目标是从中提取 ID(最后 6 个字符),但是一旦我有了变量,我就可以在 bat 中添加子字符串。
使用 for
循环得到你想要的:
for /f %%i in ('type "Craft The World.url"^|find "URL"') do (
set "A=%%i"
)
请注意,如果输出包含多行,您将不会得到 A
您期望的结果。
不需要使用type
命令;使用 input redirection (<
) 读取文件并将其传递给 find
命令。
要捕获命令行标准输出的最后一行并将其存储到变量 (LINE
) 中,请使用 for /F
loop:
for /F "tokens=1* delims== eol=" %%I in ('^< "Craft The World.url" find "URL"') do set "LINE=%%J"
echo Last line: "%LINE%"
要处理多行输出,请在循环体内执行此操作,直接使用 for
变量引用 %%J
:
for /F "tokens=1* delims== eol==" %%I in ('^< "Craft The World.url" find "URL"') do (
echo Line string: "%%J"
)
上述方法都通过使用 for /F
命令的 tokens
和 delims
选项来拆分 URL=
前缀。
使用字符串 URL=steam://rungameid/248390
,您可能会误用 for
变量引用 %%J
:
的 ~
modifies
for /F "tokens=1* delims== eol=" %%I in ('^< "Craft The World.url" find "URL"') do (
echo Line string : "%%J"
echo Last element: "%%~nxJ"
)
这是可行的,因为 /
转换为标准路径分隔符 \
,因此 steam://rungameid/248390
在内部变为 steam:\rungameid8390
,最后一个路径元素由~n
和 ~x
修饰符。其他路径修饰符 return 没有任何用处,因为它们仅在没有 /
而只有 \
出现时才可靠。
到目前为止我有这个代码(以 Craft The World 为例):
type "Craft The World.url"|find "URL"
如果我在 cmd 中 运行 它输出:
URL=steam://rungameid/248390
如何将其保存到变量中?我试过 SET A=...
但没用...
我的目标是从中提取 ID(最后 6 个字符),但是一旦我有了变量,我就可以在 bat 中添加子字符串。
使用 for
循环得到你想要的:
for /f %%i in ('type "Craft The World.url"^|find "URL"') do (
set "A=%%i"
)
请注意,如果输出包含多行,您将不会得到 A
您期望的结果。
不需要使用type
命令;使用 input redirection (<
) 读取文件并将其传递给 find
命令。
要捕获命令行标准输出的最后一行并将其存储到变量 (LINE
) 中,请使用 for /F
loop:
for /F "tokens=1* delims== eol=" %%I in ('^< "Craft The World.url" find "URL"') do set "LINE=%%J"
echo Last line: "%LINE%"
要处理多行输出,请在循环体内执行此操作,直接使用 for
变量引用 %%J
:
for /F "tokens=1* delims== eol==" %%I in ('^< "Craft The World.url" find "URL"') do (
echo Line string: "%%J"
)
上述方法都通过使用 for /F
命令的 tokens
和 delims
选项来拆分 URL=
前缀。
使用字符串 URL=steam://rungameid/248390
,您可能会误用 for
变量引用 %%J
:
~
modifies
for /F "tokens=1* delims== eol=" %%I in ('^< "Craft The World.url" find "URL"') do (
echo Line string : "%%J"
echo Last element: "%%~nxJ"
)
这是可行的,因为 /
转换为标准路径分隔符 \
,因此 steam://rungameid/248390
在内部变为 steam:\rungameid8390
,最后一个路径元素由~n
和 ~x
修饰符。其他路径修饰符 return 没有任何用处,因为它们仅在没有 /
而只有 \
出现时才可靠。