1 获取IP地址

echo StartChangeIPFile
echo 获取主机名
for /f %%i in ('hostname') do (set pcName=%%i)
::ping %pcName% -4
echo 开始获取IP并保存在c:\tmp\ip.txt文件中
for /f "tokens=2 delims=[]" %%i in ('ping %pcName% -4^|findstr "%pcName%"') do (set ip=%%i
echo %%i>c:\tmp\ip.txt)
echo 替换内容
for /f "tokens=* " %%i in (c:\tmp\ip.txt) do set "ip=%%i"
if defined ip (
    echo 变量 ip 的值不为空
) else (echo 变量 ip 为空值
pause)

::下面的内容是修改某个文件,将指定内容替换为上面取到的IP,注意不是获取IP的部分啦
::这里用到了sed命令,如果使用的话,可以网上下载Windows版本的即可
sed "s/=.*IP/=%ip%/g" %DirPath%agent_net.cfg >c:\tmp\agent_net.cfg
echo 覆盖内容
copy /y c:\tmp\agent_net.cfg %DirPath%agent_net.cfg

如果主机在hosts文件中加入 127.0.0.1 hostname解析,那么使用如上方法可能获取的ip地址是127.0.0.1,

我们可以使用powershell来获取IP:

参考:Get Current IP Address

 #Here is a quick way to get all IP addresses assigned to your #computer:

 #requires -Version 

 $ipaddress = [System.Net.DNS]::GetHostByName($null)
 Foreach ($ip in $ipaddress.AddressList)
 {
   $ip.IPAddressToString
 }
 If you replace $null with a hostname (like "server123"), you can retrieve the IP address(es) assigned to that computer instead, too.

 #And if you are just interested in IPv4 addresses, try this:

 #requires -Version 

 $ipaddress = [System.Net.DNS]::GetHostByName($null)
 foreach($ip in $ipaddress.AddressList)
 {
   if ($ip.AddressFamily -eq 'InterNetwork')
   {
     $ip.IPAddressToString
   }
 }

2 关于For循环

还是参考他人的比较全面,如下:

BAT批处理删除指定字符之前或之后的所有内容

直接使用window帮助就行,打开cmd,输入 for /?.

比较常用的如下(直接运行bat文件替换下面%为%%,如果再命令行直接写的话,直接单%如下就行了)

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

3 再贴几个语法句式吧

1 if……else

if  exist "D:\"  (
    echo aaa
    goto DecompressOnDiskD

) else (
    goto DecpmpressOnDiskC

)

2 脚本调用其他脚本,万不可使用goto,要用call,否则会执行中断的

3 变量赋值是set

4 程序内跳转,最好使用标签,然后用goto跳转

goto ChangeIp

:changeIp
echo StartChangeIPFile

5 Windows转义字符是^,如下

set "str1=^<WorkingDirectory^>%cd%^<^/WorkingDirectory^>"

Windows脚本相关的更多相关文章

  1. VBScript: Windows脚本宿主介绍

    Windows脚本宿主(Windows Script Host, WSH)是一个Windows管理工具.WSH创建了一个脚本运行的主环境,WSH使脚本能够使用对象和服务,并提供脚本执行的准则.WSH还 ...

  2. c# 动态执行脚本,相关的几个脚本引擎.

    Jint   嵌入式的javascript脚本支持引擎,一直都在更新,对各种方法支持也比较好,可以 C# 交互. https://github.com/sebastienros/jint Jurass ...

  3. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  4. Windows脚本

    最近项目测试比较麻烦,要启动好几个command窗口,手敲之类的有些繁琐,于是研究了一下windows脚本,实现以下功能: 懒人吗,参数意义顺序比较懒得记,所以需要友好参数提示: 根据参数数量决定启动 ...

  5. windows脚本(VBS)之cmd命令行的妙用

    windows脚本(VBS)之cmd命令行的妙用 (2009-08-06 13:40:55) 转载▼ 标签: 脚本 cmd 命令行 vbs js 简单 公式 windows it 分类: 计算机 脚本 ...

  6. 修改host指定域名指向ip,Windows脚本与Linux脚本

    修改host指定域名指向ip,Windows脚本与Linux脚本 一,Windows系统修改hosts文件 Windows系统下hosts文件位置:C:\Windows\System32\driver ...

  7. windows脚本-CMD和Batch

    一.DOS,CMD和batch DOS是磁盘操作系统(英文:Disk Operating System)的缩写,是个人计算机上的一类操作系统.从1981年直到1995年的15年间,DOS在IBM PC ...

  8. windows脚本配置ip地址

    背景:工作上经常涉及到要调试设备,每次都要手动配置静态ip地址,配置完之后还要重新改回来,有时候为了连续调试多台设备,来回手动更改ip,实在麻烦. 思考:想到windows有脚本,可以利用脚本文件达到 ...

  9. window FILES——windows文件管理相关实例

    C语言下有一套文件管理方案.C++语言下也有一套自己的文件管理方案.windows系统当然也有自己的一套文件管理方案啦.对于普通char类型为基础的字符使用哪种方案的解决办法都是一样的,但是对于宽字符 ...

随机推荐

  1. webapi框架搭建-创建项目(一)

    本文只是一些基本的vs操作,供初学者参考,有基础的请查看 创建项目(二) 创建项目(三) 前言 为了从头了解webapi的技术,创建一个为空的项目 步骤 我用的是vs2017,从文件-->新建- ...

  2. [整]swp文件的处理

    报错 vim非正常关闭,再下次编辑打开文件时均为显示如下警告信息: Swap file "test.xml.swp" already exists! [O]pen Read-Onl ...

  3. flask开发框架

    # -*- coding: utf-8 -*- # import fcrm from fcrm import app if __name__ == '__main__': # fcrm.app.run ...

  4. UVa 11461 - Square Numbers【数学,暴力】

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. [bzoj3702] 二叉树

    一个节点的儿子是否交换,不会影响到它和兄弟节点间的逆序对数. 所以每次合并线段树的时候算一下交换与不交换的逆序对数,然后选个较小值就行了. #include<cstdio> #includ ...

  6. BZOJ1786: [Ahoi2008]Pair 配对/1831: [AHOI2008]逆序对

    这两道题是一样的. 可以发现,-1变成的数是单调不降. 记录下原有的逆序对个数. 预处理出每个点取每个值所产生的逆序对个数,然后dp转移. #include<cstring> #inclu ...

  7. A. Two Bases

    A. Two Bases time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  8. SQL的case when then else end语句的用法

    SELECT a.managecom, a.subtype, count(*) loadsucc, sum(case when a.state in  ('4', '5', '6', '7', '8' ...

  9. UEP-自定义持久化类

    HY-UEP提供了两种持久化方式:基于JPA的持久化机制和自定义持久化机制,JPA的持久化机制 比较符合现在的软件开发模式,支持各种主流数据库;自定义持久化时我们平台产品的特有持久化 机制的升级,在综 ...

  10. Java map 详解 - 用法、遍历、排序、常用API等

    尊重原创: http://www.cnblogs.com/lzq198754/p/5780165.html 概要: java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 L ...