无忧启动论坛

标题: 如何截取带"的字符串 [打印本页]

作者: 807979023    时间: 2020-8-23 20:22
标题: 如何截取带"的字符串
如何截取带"的字符串?
  1. for /f "tokens=2 delims=:" %%i in ('reg query HKCR\http\shell\open\command') do set iee=%systemDrive%%%i
  2. echo;默认浏览:  %iee%
复制代码
运行结果是 c:\Program Files\世窗\Application\TheWorld.exe" -- "%1"
如何截取为 c:\Program Files\世窗\Application\TheWorld.exe



作者: plusv    时间: 2020-8-23 22:36
Test OS: Windows 7 X64




a.rar

219 Bytes, 下载次数: 18, 下载积分: 无忧币 -2


作者: 807979023    时间: 2020-8-24 07:38
谢谢,试验成劝!

作者: holley2008    时间: 2020-8-24 09:41
如果--前后有空格的话,貌似%iee:~0,-7%就满足要求了吧??
作者: 807979023    时间: 2020-8-24 11:54
本帖最后由 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
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
plusv 发表于 2020-8-24 12:18
这方法不好,
当用户装不同的浏览器,
后面的参数会变动,

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

作者: alexbro    时间: 2020-8-24 13:40
好像再讨论什么高深的东西
作者: 江南一根葱    时间: 2020-8-24 14:36
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
江南一根葱 发表于 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
  1. @echo off
  2.     for /f tokens^=2^ delims^=^" %%i in ('reg query HKCR\http\shell\open\command /ve') do set iee=%%i
  3.     echo %iee%
  4.     pause
复制代码

作者: 807979023    时间: 2020-8-24 21:06
moran 发表于 2020-8-24 20:25

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


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

对的,用双引号做了分隔符,就这个路径有双引号。
作者: vaf    时间: 2020-8-25 01:59
我想 echo /? 或 /h 帮助
结果显示成:
显示消息,或者启用或关闭命令回显。

  ECHO [ON | OFF]
  ECHO [message]

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

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

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

作者: dos时代菜鸟    时间: 2020-8-25 17:01
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /f "delims=" %%c in (' reg query HKCR\http\shell\open\command') do (
  4.         set x=%%c
  5.         set x=!x:"=/!
  6.         for /f "tokens=2 delims=/" %%d in ('echo !x!') do (
  7.                 if not  "%%d"=="" echo %%d
  8.         )
  9. )
复制代码

作者: 807979023    时间: 2020-8-25 21:20
谢谢,7和10成功。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3