标题: [文件操作] [已解决]bat如何根据输入的名字,获取txt文件里面的某个值,作为变量使用? [打印本页]
作者: ygqiang 时间: 2015-5-13 22:59 标题: [已解决]bat如何根据输入的名字,获取txt文件里面的某个值,作为变量使用?
本帖最后由 ygqiang 于 2015-5-14 21:26 编辑
[已解决]xp或win7系统。bat如何根据输入的名字,获取txt文件里面的某个值,作为变量使用?
192.168.10.txt文件的内容如下
CB1 11
CB3 13
CB4 14
CB5 15
CB6 16
CB7 17
CB8 18
CB9 19
CB10 20
CB11 21
CB12 22
CB2 12
ZWDD 33
ZWJH1 31
ZWJH2 32
根据输入的名字。。。匹配后面的数字,赋值给变量。。
比如输入ZWDD或者zwdd(不区分大小写),变量就赋值33
如果输入zw或者ZWD或者随便输入数字2,都没有一个匹配的,就提示没有zw/zwd/2的名字。。
获取到的变量应该是后面的数字。。。作为ip地址使用。。。
下面的代码,如何修改?- @echo off
- for /f "tokens=2" %%i in (192.168.10.txt) do (
- echo,%%i
- )
- pause
-
-
- @echo off
- for /f "tokens=1" %%i in (192.168.10.txt) do (
- echo,%%i
- )
- pause
复制代码
下面的这个代码,有很多小问题。。。- @echo off
- set /p var=请输入:
- for /f "tokens=2" %%i in ('findstr /i "%VAR%" 192.168.10.txt') do (
- if "%%i"=="" (
- echo 无%var%
- ) else echo %%i
- )
-
- pause
- exit
复制代码
作者: fcxk 时间: 2015-5-14 01:33
本帖最后由 fcxk 于 2015-5-14 01:34 编辑
@echo off
:bb
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a in ('findstr "!var!" 192.168.10.txt') do (
if "%%a"=="!var!" echo,%%a %%b
)
ping -n 2 0 >nul
goto bb
pause
作者: czjt1234 时间: 2015-5-14 06:28
本帖最后由 czjt1234 于 2015-5-14 06:40 编辑
- @echo off
- set /p var=请输入:
- set sOut=未找到
- for /f "tokens=1,2" %%i in (192.168.10.txt) do (
- if /i %%i==%var% set sOut=%%j
- )
- echo %sOut%
复制代码
作者: ygqiang 时间: 2015-5-14 06:30
@echo off
:bb
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a i ...
fcxk 发表于 2015-5-14 01:33
多谢。。。。
你这个代码,如果输入zwdd,不显示。输入ZWDD会显示。。
就是说,实际相要的效果是不区分大小写。
作者: ygqiang 时间: 2015-5-14 06:35
czjt1234 发表于 2015-5-14 06:28
多谢。你的这个代码。不好用。。。
楼上的大体好用。但不能忽略大小写。。
作者: czjt1234 时间: 2015-5-14 06:40
已修改~~~~~~~~~~~
作者: ygqiang 时间: 2015-5-14 06:45
已修改~~~~~~~~~~~
czjt1234 发表于 2015-5-14 06:40
多谢。。测试好用。。。- @echo off
- set /p var=请输入:
- set sOut=未找到
- for /f "tokens=1,2" %%i in (192.168.10.txt) do (
- if /i %%i equ %var% set sOut=%%j
- )
- echo %sOut%
- pause
复制代码
作者: fcxk 时间: 2015-5-14 08:43
回复 4# ygqiang
加个 i 就行了
作者: fcxk 时间: 2015-5-14 09:54
本帖最后由 fcxk 于 2015-5-14 09:56 编辑
回复 1# ygqiang
@echo off
:bb
cls
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a in ('findstr /i "!var!" 192.168.10.txt') do ( echo,%%a %%b )
ping -n 2 0 >nul
goto bb
pause
作者: ygqiang 时间: 2015-5-14 13:11
本帖最后由 ygqiang 于 2015-5-14 13:14 编辑
回复 ygqiang
@echo off
:bb
cls
setlocal enabledelayedexpansion
set /p var=请输入查找内容
...
fcxk 发表于 2015-5-14 09:54
多谢。。。。你的代码还是有问题。。如果输入w或者2的时候。。
下面是最终代码。。。- @ECHO OFF
-
- set Addr=192.168.8
- set Mask=255.255.255.128
- set Gway=192.168.8.1
-
-
-
-
-
- cls
-
- set /p name=输入计算机名,按回车键:
-
- set slection1=未找到对应的IP
- for /f "tokens=1,2" %%i in (计算机名-ip地址.txt) do (
- if /i %%i==%name% set slection1=%%j
- )
- if %slection1% equ 未找到对应的IP (
- set /p slection1=请输入IP地址,按回车键(%Addr%.只输最后1位):
- )
-
- cls
- echo 计算机名:%name%
- echo ip地址:%Addr%.%slection1%
- echo 正在修改中...
- ping 127.0.0.1 -n 2 >nul 2>nul
-
-
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t reg_sz /d %name% /f >nul 2>nul
- reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t reg_sz /d %name% /f >nul 2>nul
-
- reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f >nul 2>nul
- reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t reg_sz /d %name% /f >nul 2>nul
-
-
- reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f
- reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%name%" /f
- reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%name%" /f
- reg add "HKLM\SYSTEM\ControlSet002\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f
-
-
-
- ::用ipconfig /all命令获取网卡名称。
- FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set name=%%j
- ::用for命令删除网卡名称后面的冒号。
- FOR /F "tokens=1* delims=:" %%i in ("%name%") do set a=%%i
-
- netsh interface ip set address name="%a%" source=static addr="%Addr%.%slection1%" mask=%Mask% gateway=%Gway% gwmetric=1 >nul 2>nul
复制代码
作者: terse 时间: 2015-5-14 22:51
findstr 应该可行- @echo off
- set /p name=输入计算机名,按回车键:
- for /f "tokens=2" %%i in ('findstr /ib "%name%\>" 19.168.10.txt') do set slection1=%%i
- if not defined slection1 (
- set /p slection1=请输入IP地址,按回车键
- )
- echo;%slection1%
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |