Board logo

标题: [文件操作] []已解决]批处理如何提取某个命令执行结果中特定字符串设为变量 [打印本页]

作者: websfx    时间: 2016-8-14 21:00     标题: []已解决]批处理如何提取某个命令执行结果中特定字符串设为变量

如何取出命令输出的值设为变量
操作IIS7  利用 appcmd 命令列出 上面一行内容:

C:\Windows\System32\inetsrv\appcmd.exe list sites  显示如下 :

SITE "Default Web Site" (id:1,bindings:http/*:80:,state:Started)

那么怎样分别取出下面的值并分别定义一个变量
Default Web Site
id:1   这里的1是随机数,每次添加一个站点都会加1  我只要取出 这个值就行

bindings:http/*:80:www.aaa.com,state:Started,www.bb.com,wei.aa.com



谢谢版主
作者: pcl_test    时间: 2016-8-14 21:11

http://www.bathome.net/thread-2189-1-1.html
作者: websfx    时间: 2016-8-14 21:12

不好意思 版主没有找到 才向你请教
作者: pcl_test    时间: 2016-8-14 21:22

回复 3# websfx
首页就有例子,搜索都免了
http://www.bathome.net/thread-41364-1-1.html
作者: Batcher    时间: 2016-8-14 21:51

  1. @echo off
  2. for /f "tokens=1-2 delims=(," %%i in ('appcmd list site') do (
  3.     set "var1=%%i"
  4.     set "var2=%%j"
  5.     goto :ShowResult
  6. )
  7. :ShowResult
  8. set var1=%var1:~6,-2%
  9. echo,%var1%
  10. echo,%var2%
  11. pause
复制代码

作者: websfx    时间: 2016-8-14 23:22

本帖最后由 websfx 于 2016-8-14 23:51 编辑

谢谢Batcher, 为什么 只列出 "Default Web Site"  这一个站点 呢  如果 有N个站点怎么一次列出来
作者: dreamer    时间: 2016-8-15 04:12

參考 Findstr
作者: websfx    时间: 2016-8-16 09:45

本帖最后由 websfx 于 2016-8-16 09:51 编辑

@echo off
for /f "tokens=1-2 delims=(," %%i in ('appcmd list site' | findstr "Site" ) do (
    set "var1=%%i"
    set "var2=%%j"
        pause
    goto :ShowResult
)

:ShowResult
set var1=%var1:~6,-2%
echo,%var1%
echo,%var2%
pause
这样写直接跳出 不知道怎么回事
如果能查找site 所有的站点 然后列出来 最后能在前面插入序列号怎么弄 例:

1. www.aaa.com
2. www.ccc.com
3. www.dddd.com
作者: Batcher    时间: 2016-8-16 13:03

回复 8# websfx
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. for /f "tokens=1-2 delims=(," %%i in ('appcmd list site') do (
  5.     set "var1=%%i"
  6.     set var1=!var1:~6,-2!
  7.     set /a n+=1
  8.     echo,!n!.!var1!
  9.     echo,%%j
  10. )
  11. pause
复制代码

作者: websfx    时间: 2016-8-16 14:27

本帖最后由 websfx 于 2016-8-16 15:56 编辑

首先要非常感谢管理员


作者: pcl_test    时间: 2016-8-16 15:21

Q-03:如何使用“代码”标签发布脚本?
http://www.bathome.net/thread-3473-1-1.html
http://www.bathome.net/viewthread.php?tid=404
作者: websfx    时间: 2016-8-16 15:48

已经把你的BBS翻了个顶超天了 
作者: websfx    时间: 2016-8-16 16:20     标题: 如何在输出变量后分多行显示,并在前面输入序列号时删除对应值

回复 9# Batcher
如何在输出变量后分多行显示,并在前面输入序列号时删除对应值

下面的脚本是管理员写的 我加了一点内容[code]:del_domain_IIS7
cls
color 0A
setlocal EnableDelayedExpansion
echo.
set n=0
for /f "tokens=1-2 delims=(," %%i in ('appcmd list site') do (
    set "var1=%%i"
    set var1=!var1:~6,-2!
    set /a n+=1

    echo,-^> !n!. !var1!
)
作者: websfx    时间: 2016-8-16 17:29

看到pcl_test老大扣分 之后这个贴没人回了
作者: pcl_test    时间: 2016-8-16 17:46

本帖最后由 pcl_test 于 2016-8-16 17:47 编辑

回复 14# websfx

我来回一个:有个毛关系。特么要不是我的提醒及帮你修改,你的原帖只有那么一句话:如何在输出变量后分多行显示,并在前面输入序列号时删除对应值
有关系的是你的问题别人有没兴趣、你的问题是否交代清楚和神秘的人品问题,别问我为什么
作者: websfx    时间: 2016-8-17 08:26

输入序列号时删除对应值 为了方便不用输入后面站名域名
作者: Batcher    时间: 2016-8-17 08:38

回复 13# websfx
  1. @echo off
  2. :del_domain_IIS7
  3. cls
  4. REM color 0A
  5. setlocal EnableDelayedExpansion
  6. echo,
  7. set n=0
  8. for /f "tokens=1-2 delims=(," %%i in ('appcmd list site') do (
  9.     set /a n+=1
  10.     set "str=%%i"
  11.     set var!n!=!str:~6,-2!
  12.     call echo !n!. %%var!n!%%
  13. )
  14. :ChooseSite
  15. echo,
  16. set "domain=0"
  17. set /p domain=请输入要删除网站对应序列号(q退出):
  18. if /i "!domain!" equ "q" (
  19.     goto :End
  20. ) else if !domain! geq 1 (
  21.     if !domain! leq !n! (
  22.         goto :del_domain_IIS7_ok
  23.     )
  24. )
  25. goto :ChooseSite
  26. :del_domain_IIS7_ok
  27. echo,
  28. %appcmd% delete site "!var%domain%!"
  29. %appcmd% delete apppool /apppool.name:"!var%domain%!"
  30. pause
  31. goto :del_domain_IIS7
  32. :End
  33. pause
  34. goto :eof
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2