807979023 发表于 2020-8-23 20:22:57

如何截取带"的字符串

如何截取带"的字符串?
for /f "tokens=2 delims=:" %%i in ('reg query HKCR\http\shell\open\command') do set iee=%systemDrive%%%i
echo;默认浏览:%iee%运行结果是 c:\Program Files\世窗\Application\TheWorld.exe" -- "%1"
如何截取为 c:\Program Files\世窗\Application\TheWorld.exe


plusv 发表于 2020-8-23 22:36:11

Test OS: Windows 7 X64




807979023 发表于 2020-8-24 07:38:13

谢谢,试验成劝!

holley2008 发表于 2020-8-24 09:41:52

如果--前后有空格的话,貌似%iee:~0,-7%就满足要求了吧??

807979023 发表于 2020-8-24 11:54:30

本帖最后由 807979023 于 2020-8-24 11:56 编辑

holley2008 发表于 2020-8-24 09:41
如果--前后有空格的话,貌似%iee:~0,-7%就满足要求了吧??
谢谢,%iee:~0,-9% 也可以
原先的判断错了   if "%iee:~-3,-1%"=="%1" set iee=%iee:~0,-9%
要改为               if "%iee:~-2,-1%"=="1" set iee=%iee:~0,-9%



plusv 发表于 2020-8-24 12:18:49

holley2008 发表于 2020-8-24 09:41
如果--前后有空格的话,貌似%iee:~0,-7%就满足要求了吧??

这方法不好,
当用户装不同的浏览器,
后面的参数会变动,
会得到错误的结果.

例:
"c:\Program Files\世窗\Application\TheWorld.exe" -- "%1"
"C:\Program Files\Internet Explorer\iexplore.exe" %1

807979023 发表于 2020-8-24 12:59:44

plusv 发表于 2020-8-24 12:18
这方法不好,
当用户装不同的浏览器,
后面的参数会变动,


是的,变动默认浏览器后就不行了,还是采用你的方法适用性強。

alexbro 发表于 2020-8-24 13:40:45

好像再讨论什么高深的东西

江南一根葱 发表于 2020-8-24 14:36:47

for /f "tokens=3 delims= """"""" %%i in ('reg query HKCR\http\shell\open\command') do set iee=%%i
echo %iee:~1,-1%

plusv 发表于 2020-8-24 15:16:36

江南一根葱 发表于 2020-8-24 14:36
for /f "tokens=3 delims= """"""" %%i in ('reg query HKCR\http\shell\open\command') do set iee=%%i
e ...

不对.

Test OS: Windows 7 X64


moran 发表于 2020-8-24 20:25:06

@echo off
    for /f tokens^=2^ delims^=^" %%i in ('reg query HKCR\http\shell\open\command /ve') do set iee=%%i
    echo %iee%
    pause

807979023 发表于 2020-8-24 21:06:16

moran 发表于 2020-8-24 20:25


谢谢,很简洁。
好像不要 /ve 也能成功。for /f tokens^=2^ delims^=^" %%i in ('reg query HKCR\http\shell\open\command') do echo 默认浏览:%%i

moran 发表于 2020-8-24 21:40:00

807979023 发表于 2020-8-24 21:06
谢谢,很简洁。
好像不要 /ve 也能成功。

对的,用双引号做了分隔符,就这个路径有双引号。

vaf 发表于 2020-8-25 01:59:32

我想 echo /? 或 /h 帮助
结果显示成:
显示消息,或者启用或关闭命令回显。

ECHO
ECHO

若要显示当前回显设置,请键入不带参数的 ECHO。

不得已只好改成:
我想 echo /h 或 /? 帮助

难道不能显示成:
我想 echo /? 或 /h 帮助

dos时代菜鸟 发表于 2020-8-25 17:01:09

@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%c in (' reg query HKCR\http\shell\open\command') do (
        set x=%%c
        set x=!x:"=/!
        for /f "tokens=2 delims=/" %%d in ('echo !x!') do (
                if not"%%d"=="" echo %%d
        )
)

807979023 发表于 2020-8-25 21:20:10

谢谢,7和10成功。
页: [1]
查看完整版本: 如何截取带"的字符串