[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

如何取出命令输出的值设为变量
操作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



谢谢版主
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

输入序列号时删除对应值 为了方便不用输入后面站名域名

TOP

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

回复 14# websfx

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

TOP

看到pcl_test老大扣分 之后这个贴没人回了

TOP

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

回复 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!
)
1

评分人数

TOP

已经把你的BBS翻了个顶超天了 

TOP

TOP

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

首先要非常感谢管理员

1

评分人数

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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
1

评分人数

TOP

參考 Findstr

TOP

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

谢谢Batcher, 为什么 只列出 "Default Web Site"  这一个站点 呢  如果 有N个站点怎么一次列出来

TOP

  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# websfx
首页就有例子,搜索都免了
http://www.bathome.net/thread-41364-1-1.html

TOP

返回列表